Описать проблему ↗

Скорость

Высокий TTFB: почему сервер долго начинает ответ

Тест показывает высокий TTFB: сайт долго начинает отвечать. Объясняем, что измеряет этот показатель и почему он не указывает на одну конкретную неисправность.

Редакция «починимсайт» · Обновлено · 3 мин. чтения

Что происходит и с чего начать

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

Что можно проверить самостоятельно

  1. Измерьте один адрес несколько раз и сохраните условия: устройство, сеть, город проверки и состояние входа в аккаунт. Один случайный замер не показывает устойчивую картину.
  2. Сравните главную, проблемную страницу и простой файл сайта. Отметьте, меняется ли результат после повторного открытия или применения фильтра, который запускает дополнительную обработку.
  3. Проверьте, не меняется ли адрес несколько раз перед загрузкой. Передайте специалисту исходную ссылку и окончательный адрес, особенно после переноса, включения HTTPS или смены домена.

Как понять результаты проверки

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

Что проверяет разработчик

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

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

На что обратить внимание

Один медленный внешний сервис способен удерживать процессы приложения и повышать ожидание остальных посетителей. По самому значению TTFB нельзя определить, виновата сеть, база или очередь исполнения.

Как исправляют причину

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

Как убедиться, что проблема решена

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

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