TTFB (Time to First Byte): что это и как улучшить

TTFB — время от запроса браузера до получения первого байта ответа сервера. Определяет скорость ответа сервера и базу для всех остальных метрик загрузки.

производительностьttfbскорость-сервераcore-web-vitalsseo

Что такое TTFB

TTFB (Time to First Byte) — время от отправки браузером HTTP-запроса до получения первого байта ответа от сервера. Измеряется в миллисекундах и является базовой метрикой скорости ответа сервера.

TTFB включает:

  1. DNS lookup — время на разрешение доменного имени в IP
  2. TCP connection — установка TCP-соединения с сервером
  3. TLS handshake — для HTTPS: согласование SSL/TLS
  4. Server processing — время обработки запроса сервером
  5. Время передачи — первый байт данных добирается до браузера

Google включил TTFB в оценку Page Experience как sub-metric LCP. Медленный TTFB напрямую ухудшает LCP.

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

| Значение | Оценка | |----------|--------| | до 800 мс | Хорошо | | 800 — 1800 мс | Требует улучшения | | более 1800 мс | Плохо |

Примечание: Google официально не называет TTFB метрикой Core Web Vitals, но он является важным диагностическим показателем для LCP.

Как улучшить TTFB

1. Кеширование на стороне сервера

Самый эффективный метод — не генерировать страницу каждый раз:

# Nginx + FastCGI кеш
fastcgi_cache_path /tmp/nginx-cache levels=1:2 keys_zone=mycache:10m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

location ~ \.php$ {
    fastcgi_cache mycache;
    fastcgi_cache_valid 200 1h;
}

Для Next.js — ISR (Incremental Static Regeneration) или full SSG:

// getStaticProps с revalidate = кеш на сервере
export async function getStaticProps() {
  return {
    props: { data },
    revalidate: 3600  // Обновлять раз в час
  };
}

2. CDN для статических страниц

Cloudflare, Vercel Edge Network, AWS CloudFront — кешируют HTML-ответы на edge серверах рядом с пользователем.

3. Оптимизация базы данных

Часто TTFB плохой из-за медленных запросов к БД:

-- Анализ медленных запросов
EXPLAIN ANALYZE SELECT * FROM products WHERE category = 'phones';

-- Добавить индекс для ускорения
CREATE INDEX idx_products_category ON products(category);

4. Уменьшение DNS lookup времени

<!-- DNS prefetch для критических доменов -->
<link rel="dns-prefetch" href="//api.example.com" />
<link rel="preconnect" href="https://fonts.googleapis.com" />

5. Оптимизация TLS

# TLS 1.3 быстрее TLS 1.2 (1-RTT vs 2-RTT)
ssl_protocols TLSv1.2 TLSv1.3;

# Session resumption
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;

# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;

6. Upgrade сервера

  • Переход с shared хостинга на VPS даёт 3-5x улучшение TTFB
  • Физическая близость сервера к аудитории снижает время передачи

Измерение TTFB

# curl показывает все фазы подключения
curl -o /dev/null -s -w "
TTFB: %{time_starttransfer}s
Total: %{time_total}s
" https://example.com

В Chrome DevTools → Network → выберите запрос → Timing → "Waiting for server response" = TTFB.

Проверка TTFB на reChecker

Используйте Web Vitals для проверки времени ответа сервера. Инструмент покажет:

  • TTFB вашего сайта
  • Все метрики Core Web Vitals
  • Общую оценку производительности

FAQ

TTFB важнее LCP для SEO? LCP важнее напрямую для ранжирования (официальная метрика CWV). TTFB важен как предпосылка LCP: если TTFB плохой, улучшить LCP до нормы почти невозможно без его исправления.

Хороший TTFB и медленная страница — как такое бывает? TTFB измеряет только первый байт. После него браузер ещё загружает CSS, JavaScript, изображения. Сайт с TTFB 300 мс но 5 МБ JavaScript будет грузиться медленно.

CDN всегда улучшает TTFB? CDN отлично помогает для статических ресурсов и кешируемых HTML-страниц. Для динамических страниц (персонализация, данные из БД) CDN не кеширует ответ — придётся обращаться к origin серверу.

Попробуйте инструмент

Проверьте ttfb (time to first byte) на вашем сайте с помощью бесплатного инструмента.

Web Vitals

Техническая поддержка

Нашли баг, сбой или ошибку в работе сервиса? Есть предложение по улучшению? Напишите нам — мы читаем каждое сообщение и стараемся быстро исправлять проблемы.