Разработка сайтов

TTFB

TTFB

TTFB (Time to First Byte, время до первого байта) — промежуток между тем, как браузер попросил страницу, и тем, как от сервера пришёл самый первый байт ответа. Это не скорость загрузки сайта целиком, а длина паузы перед началом ответа: сколько сервер думал, прежде чем заговорить.

Как считают паузу перед ответом

Отсчёт начинается в тот момент, когда браузер отправил запрос, и заканчивается на первом байте ответа. Внутри этого отрезка помещается вся невидимая подготовка: найти адрес сервера, установить соединение, договориться о защищённом канале, дождаться, пока сервер соберёт страницу, и получить первую порцию разметки.

На практике первые пункты занимают немного и слабо зависят от сайта. Основную часть обычно съедает последний: работа самого сайта. Поэтому длинная пауза почти всегда означает не «плохой интернет», а «страница дорого собирается» или «площадке тяжело».

Смотреть удобнее всего в панели разработчика браузера, на вкладке сетевых запросов: там у самого первого запроса видно, сколько времени ушло на ожидание ответа. Публичные сервисы проверки скорости тоже показывают эту цифру, но усредняют её и меряют со своего оборудования.

Из чего складывается ожидание

  • Поиск адреса сервера и соединение — обычно десятки миллисекунд.
  • Установка защищённого соединения — заметна на первом запросе, дальше почти нет.
  • Работа сайта: база, шаблоны, подстановка цен — чаще всего главный вклад.
  • Дорога от сервера до посетителя — тем больше, чем дальше площадка от аудитории.

Быстрый сервер и пустой экран — не одно и то же

Владельцу сайта важно не то, когда пришёл первый байт, а когда человек увидел товар и смог нажать кнопку. Эти два события разделяет ещё целая цепочка работы браузера. Бывает и наоборот: сервер отвечает мгновенно, а экран остаётся белым секунды, потому что в самом верху страницы стоят тяжёлые скрипты и посторонние виджеты.

Поэтому в отчёте цифры разводят по зонам ответственности: одни лечит разработчик на сервере, другие — верстальщик и маркетолог, который решает, сколько внешних счётчиков будет жить на сайте.

Что видимО чём это говоритКуда идти чинить
Длинная пауза до ответаСервер долго собирает страницуГотовые копии страниц, запросы к базе, мощность площадки
Пауза короткая, экран белыйСервер ни при чёмСтили и скрипты в начале страницы, шрифты, внешние виджеты
Пауза скачет от замера к замеруУсловия замеров разныеПодписать нагрузку, регион и была ли готовая копия
Плохо только на мобильныхСлабое устройство и сетьВес страницы, картинки, объём скриптов

Из-за чего замер врёт

Самая частая ошибка выглядит безобидно. Специалист открывает страницу, видит полсекунды, обновляет — уже двести миллисекунд, и делает вывод, что всё хорошо. На самом деле он сам только что прогрел страницу своим первым заходом, а клиент утром попадёт ровно в те условия, что были в начале.

Вторая ошибка — мерить не оттуда, где живут покупатели: тест с зарубежного сервера добавляет время на дорогу и делает картину хуже реальной, а проверка из соседнего с офисом дома, наоборот, приукрашивает. Третья — один-единственный прогон вместо серии замеров утром и в вечерний час пик.

Правило отчётаРядом с каждой цифрой пишут условия: время суток, регион и была ли у страницы готовая копия. Без этого «0,1 с» и «7 с» на одном адресе выглядят как спор, хотя это два разных сценария — самый тяжёлый из них разобран в термине Cold.

Что сокращают в первую очередь

  1. Убрать повторную сборку одинаковых страниц — отдавать сохранённую копию, это HTML-кэш.
  2. Посмотреть, что сайт делает на каждый запрос: лишние обращения к базе, тяжёлые фильтры, подсчёт того, чего никто не видит.
  3. Проверить дополнения и плагины: один неудачный модуль умеет добавлять секунду к каждому ответу.
  4. Сократить количество товаров и блоков, которые страница собирает за раз.
  5. И только после этого обсуждать мощность и расположение площадки — хостинг.

Порядок здесь не случайный: рычаги расставлены по возрастанию стоимости. Самое дешёвое действие обычно и даёт самый заметный эффект, а переезд на дорогую площадку без разбора причин чаще всего просто переносит проблему на новый адрес.

TTFB: как применяют

Эту паузу всегда меряют отдельно от того, что потом происходит в браузере. Длинная пауза означает, что тяжело было серверу: не хватает мощности площадки, страница собирается сложно, база отвечает медленно, готовой копии нет. Если пауза уже короткая, а экран всё равно остаётся пустым, дальше копают не сервер, а стили, шрифты и сторонние скрипты. Смешивать две зоны ответственности — верный способ месяц чинить не то.

Частые вопросы

Что такое TTFB?

Время до первого байта: сколько прошло от запроса страницы до момента, когда сервер начал отдавать ответ. Начало загрузки, а не вся загрузка.

TTFB простыми словами?

Сколько собеседник молчит в трубку, прежде чем начать говорить. Пока он молчит, вы не знаете, услышали вас или нет, — и на экране в это время ничего не происходит.

Какой TTFB считается нормальным

Для обычной страницы сайта ориентируются на сотни миллисекунд, а ответ из готовой копии обычно укладывается в доли секунды. Секунда и больше на простой странице — повод разбираться с сервером.

Чем TTFB отличается от скорости загрузки страницы?

Это только первый отрезок. После первого байта браузер ещё качает разметку, стили, шрифты и картинки, считает раскладку и рисует экран. Короткая пауза в начале не гарантирует, что человек быстро увидит страницу.

Как уменьшить TTFB?

Убрать лишнюю работу сервера на каждый запрос, отдавать популярные страницы из готовых копий, держать площадку ближе к аудитории, проверить запросы к базе и отключить плагины, которые встают на пути каждого ответа.

Почему TTFB разный при каждом замере?

Замеры попадают в разные условия: первый заход после сброса копии тяжелее прогретого, вечерняя нагрузка выше утренней, тест из другой страны добавляет время на дорогу. Поэтому смотрят серию замеров и подписывают условия.

← К разделу «Разработка сайтов»