Различное значение TTFB в Chrome и Web Vitals

Я замечаю разные значения TTBF на вкладке сети Chrome по сравнению с зарегистрированными WebVitals. В идеале это должно быть точно такое же значение, но иногда наблюдается большая разница до 2-3 секунд для определенных сценариев.

Я использую Next.js и reportWebVitals для регистрации соответствующих показателей производительности.

Вот образец репо , URL приложения и скриншоты для справки.

С помощью performance.timing.responseStart - performance.timing.requestStart возвращает более подходящее значение, чем полагается на значение TTFB WebVitals.

Есть идеи, что может пойти не так? Это ошибка в WebVitals, и я не должен ее использовать или ошибаться с моей стороны при использовании / регистрации значений?

1 ответ

Номер предоставлен reportWebVitals (и лежащая в основе библиотека ) обычно считается правильным TTFB в сообществе веб-разработчиков (хотя, честно говоря, есть некоторые различия в реализации для разных инструментов).

Я считаю, что DevTools помечает это меньшее число «Ожидание (TTFB)» как неформальный намек для пользователя, что это за «ожидание», чтобы дать ему контекст, и потому что это обычно большая часть времени TTFB.

Однако с точки зрения пользователя, время до первого байта действительно должно включать в себя все время с момента, когда пользователь начинает переход на страницу, до момента, когда сервер отвечает первым байтом этой страницы, что будет включать время для Разрешение DNS, согласование соединения, перенаправления (если есть) и т. Д. DevTools действительно включает в себя по крайней мере некоторую информацию об этом дополнительном времени на этом снимке экрана, просто разделенную на различные периоды над якобы номером TTFB (см. «Очередь», «Остановлено», и записи «Запрос отправлен»).

Обычно спецификацию Resource Timing можно использовать как источник правды для разговоров о веб-производительности. Он помещает время 0 как начало навигации :

На протяжении всей этой работы все значения времени измеряются в миллисекундах с момента начала навигации по документу [ HR-TIME-2 ]. Например, начало навигации по документу происходит в момент времени 0.

А затем определяет <tcode id="48592684"></tcode> в качестве

Время сразу после того, как HTTP-парсер пользовательского агента получит первый байт ответа

Так performance.timing.responseStart - performance.timing.navigationStart сам по себе является измерением TTFB браузером (или performance.getEntriesByType('navigation')[0].responseStart в новом API-интерфейсе Navigation Timing Level 2), и это число web-vitals также используется для TTFB .

Другие вопросы по тегам