Почему первая краска происходит до того, как HTML начинает загружаться?
Я собираю данные с помощью API Navigation Timing.
В частности, эти четыре метрики:
// Time spent during redirection
var redirectTime = performance.timing.redirectEnd - performance.timing.redirectStart;
// DNS query time
var lookupDomainTime = performance.timing.domainLookupEnd - performance.timing.domainLookupStart;
// TCP connection time
var connectTime = performance.timing.connectEnd - performance.timing.connectStart;
// Time to first paint, in milliseconds.
var firstPaintTime = window.chrome.loadTimes().firstPaintTime * 1000 - performance.timing.navigationStart;
Я нахожу это на регулярной основе redirectTime + lookupDomainTime + connectTime > firstPaintTime
, Если первая метрика рисования в Chrome рассчитывается по навигационной схеме StartStart, это означает, что первая рисование происходит до того, как будет загружен любой HTML-код. Это кажется невозможным.
Если firstPaintTime не рассчитывается из window.performance.timing.navigationStart
с какого момента рассчитывается?
1 ответ
Это сделано для того, чтобы позволить цвету темы или фону последней страницы / вкладки оставаться до тех пор, пока новая страница не определит требуемый цвет.
Это предотвращает переход белых вспышек с темной страницы на темную.
Вы можете узнать больше об изменениях, внесенных в прошлом году в первоначальную раскраску, здесь: https://bugs.chromium.org/p/chromium/issues/detail?id=470669 Существует кроличья нора с билетами и ошибками, так что вы можете иметь исследовать, чтобы получить полную картину.