Пороговые значения TTFB

TTFB (Time to First Byte) — это ключевой показатель, используемый для оценки времени отклика сервера и скорости доставки первой части данных браузеру. В контексте Web Vitals TTFB не является официальным «Core Web Vital», однако его измерение важно для понимания производительности серверной части и сетевого взаимодействия.

Определение и методика измерения

TTFB вычисляется как время от момента отправки браузером HTTP-запроса до получения первого байта ответа сервера. Состоит из трёх компонентов:

  1. DNS Lookup — время, затраченное на разрешение доменного имени.
  2. TCP Connection & TLS Handshake — время установления сетевого соединения и безопасного канала при HTTPS.
  3. Server Processing — время обработки запроса на сервере до отправки первого байта ответа.

Итоговая формула выглядит так:

TTFB = DNS + TCP/TLS + Server Processing

Для корректного измерения TTFB важно учитывать не только серверную обработку, но и сетевые задержки между клиентом и сервером.

Пороговые значения TTFB

Для Web Vitals и общей оценки производительности веб-сайта используются следующие ориентиры:

  • Хорошее значение: ≤ 200 мс Сервер отвечает быстро, страница может начать рендериться практически мгновенно.
  • Среднее значение: 200–500 мс Допустимый диапазон для большинства сайтов, однако при значении ближе к 500 мс необходимо оптимизировать сервер и сетевые маршруты.
  • Плохое значение: > 500 мс Высокая задержка негативно влияет на пользовательский опыт и SEO, требуется обязательная оптимизация.

Эти пороговые значения ориентированы на пользовательский опыт, так как TTFB напрямую влияет на Largest Contentful Paint (LCP) и скорость отображения критического контента.

Инструменты измерения TTFB

  • Navigation Timing API: позволяет получить TTFB на клиенте через объект performance.timing. В современных браузерах рекомендуется использовать performance.getEntriesByType('navigation'). Пример получения TTFB:
const [navigation] = performance.getEntriesByType('navigation');
const ttfb = navigation.responseStart - navigation.requestStart;
console.log(`TTFB: ${ttfb} ms`);
  • Web Vitals Library: библиотека web-vitals предоставляет удобные функции для измерения LCP, FID, CLS и других метрик, а TTFB можно получить через кастомное событие или дополнительно измеряя navigation.responseStart.

  • Серверные инструменты мониторинга: такие как New Relic, Datadog, Google Cloud Monitoring, позволяют измерять TTFB на серверной стороне, что даёт точную картину сетевых и серверных задержек.

Факторы, влияющие на TTFB

  1. Производительность сервера

    • Нагрузочное тестирование и оптимизация серверного кода критичны.
    • Использование кэширования данных, уменьшение времени обработки запросов.
  2. Сеть и география

    • Расстояние между пользователем и сервером увеличивает TTFB.
    • CDN (Content Delivery Network) помогает сократить задержку и улучшить TTFB для глобальных пользователей.
  3. HTTP/2 и HTTP/3

    • Современные протоколы ускоряют передачу первого байта за счёт мультиплексирования и оптимизации TLS.
  4. Кэширование на уровне браузера и прокси

    • Правильная настройка Cache-Control и ETag снижает количество запросов к серверу, тем самым уменьшая TTFB для повторных посещений.

Практические рекомендации

  • Минимизировать серверные задержки: оптимизация базы данных, уменьшение объёма динамического рендеринга.
  • Использовать CDN: распределение контента по географическим точкам ускоряет доставку первого байта.
  • Применять сжатие и оптимизацию контента: GZIP, Brotli, минимизация объёма HTML и JSON.
  • Контролировать сторонние скрипты: загрузка больших библиотек на серверной стороне может увеличить TTFB.

Влияние на пользовательский опыт

TTFB напрямую определяет, когда браузер сможет начать рендеринг страницы. Высокие значения TTFB вызывают задержку First Paint и Largest Contentful Paint, что приводит к ощущению медленного сайта. Даже если остальные метрики оптимизированы, высокий TTFB создаёт впечатление «тормозящего» веб-приложения.