Что такое ТТФБ?
TTFB — это метрика, которая измеряет время между запросом ресурса и началом поступления первого байта ответа.
startTime
и responseStart
.TTFB представляет собой сумму следующих фаз запроса:
- Время перенаправления
- Время запуска сервисного работника (если применимо)
- DNS-поиск
- Соединение и согласование TLS
- Запрос, вплоть до момента поступления первого байта ответа
Сокращение задержки при установке соединения и на внутреннем сервере может снизить TTFB.
TTFB и первые намеки
Введение 103 Early Hints вызывает некоторую путаницу относительно того, что измеряет "первый байт" TTFB. 103 Early Hints считаются "первыми байтами". finalResponseHeadersStart
— это дополнительная запись времени для responseStart
, которая измеряет начало окончательного ответа документа (обычно ответа HTTP 200), который необходимо измерить.
Early Hints — это просто новый пример раннего реагирования. Некоторые серверы позволяют раннюю очистку ответа документа до того, как станет доступен основной текст — либо только с заголовками HTTP, либо с элементом <head>
, оба из которых можно считать аналогичными по эффекту Early Hints. Это еще одна причина, по которой все они измеряются как reponseStart
и, следовательно, TTFB.
Есть реальная ценность в отправке данных на раннем этапе, если полный ответ займет больше времени. Однако это затрудняет сравнение TTFB на разных платформах или технологиях в зависимости от используемых ими функций и того, как это влияет на используемое измерение TTFB. Самое главное — понимать, что измеряет используемый вами инструмент и как на это влияет измеряемая платформа.
Какой показатель TTFB считается хорошим?
Поскольку TTFB предшествует ориентированным на пользователя показателям , таким как First Contentful Paint (FCP) и Largest Contentful Paint (LCP) , рекомендуется, чтобы ваш сервер отвечал на запросы навигации достаточно быстро, чтобы 75-й процентиль пользователей испытывал FCP в пределах «хорошего» порога . В качестве грубого ориентира, большинство сайтов должны стремиться иметь TTFB 0,8 секунды или меньше.
Как измерить TTFB
TTFB можно измерить в лабораторных или полевых условиях следующими способами.
Полевые инструменты
Лабораторные инструменты
- В сетевой панели DevTools Chrome
- Тест веб-страницы
Измерение TTFB в JavaScript
Вы можете измерить TTFB навигационных запросов в браузере с помощью Navigation Timing API . В следующем примере показано, как создать PerformanceObserver
, который прослушивает запись navigation
и регистрирует ее в консоли:
new PerformanceObserver((entryList) => {
const [pageNav] = entryList.getEntriesByType('navigation');
console.log(`TTFB: ${pageNav.responseStart}`);
}).observe({
type: 'navigation',
buffered: true
});
Библиотека JavaScript web-vitals
также может измерять TTFB в браузере более кратко:
import {onTTFB} from 'web-vitals';
// Measure and log TTFB as soon as it's available.
onTTFB(console.log);
Измерение запросов ресурсов
TTFB применяется ко всем запросам, а не только к навигационным. В частности, ресурсы, размещенные на серверах с кросс-источниками, могут вызывать задержку из-за необходимости устанавливать соединения с этими серверами. Чтобы измерить TTFB для ресурсов в полевых условиях, используйте API Resource Timing в PerformanceObserver
:
new PerformanceObserver((entryList) => {
const entries = entryList.getEntries();
for (const entry of entries) {
// Some resources may have a responseStart value of 0, due
// to the resource being cached, or a cross-origin resource
// being served without a Timing-Allow-Origin header set.
if (entry.responseStart > 0) {
console.log(`TTFB: ${entry.responseStart}`, entry.name);
}
}
}).observe({
type: 'resource',
buffered: true
});
Предыдущий фрагмент кода похож на тот, который использовался для измерения TTFB для навигационного запроса, за исключением того, что вместо запроса записей 'navigation'
вы запрашиваете записи 'resource'
. Он также учитывает тот факт, что некоторые ресурсы, загруженные из первичного источника, могут возвращать значение 0
, поскольку соединение уже открыто или ресурс мгновенно извлекается из кэша.
Как улучшить TTFB
Инструкции по улучшению TTFB вашего сайта см. в нашем подробном руководстве по оптимизации TTFB .