Возможно, вы слышали фразу “Время до первого байта”, но почему-то эта концепция кажется некоторым людям не понятной. То ли потому, что оно кажется невероятно технически ориентированным, то ли потому, что оно кажется абстрактной концепцией, не столь важной для повседневного использования. Ничто не может быть дальше от истины. Время до первого байта – это не концепция или идея, которую должны понимать только технари. Каждый должен быть в состоянии понять его смысл и применить на практике. В этой статье я собираюсь в нескольких словах объяснить вам, что такое время до первого байта, как оно влияет на ваш сайт и почему вы должны уделять этому вопросу большое внимание, если хотите предоставить своим читателям наилучшие впечатления от просмотра вашего сайта.
Что такое время до первого байта?
Время до первого байта (TTFB) – это измерение, используемое в качестве показателя отзывчивости веб-сервера или другого сетевого ресурса. TTFB измеряет время от момента отправки пользователем или клиентом HTTP-запроса до получения браузером клиента первого байта страницы. Это время складывается из времени соединения сокета, времени, затраченного на отправку HTTP-запроса, и времени, затраченного на получение первого байта страницы. Хотя иногда ошибочно считают, что это расчет после DNS, первоначальный расчет TTFB в сетевых технологиях всегда включает сетевую задержку при измерении времени, необходимого для начала загрузки ресурса. Это “техническое” объяснение, взятое непосредственно из Википедии. Теперь давайте переведем его в более простое, удобное для всех.
Время до первого байта – это время, которое проходит с момента нажатия кнопки для загрузки веб-сайта до момента начала его рендеринга. Если говорить об этом в игровых терминах, то время до первого байта можно сравнить с “задержкой” или “лагом”, который вы испытываете во время игры. Задержка является прямым показателем того, насколько отзывчивым является ваш сайт.
Какие факторы влияют на время до первого байта?
Время до первого байта может быть представлено несколькими факторами, но поскольку это статья о WordPress, мы сведем все к тому, на что влияет наличие WordPress.
- Время отклика DNS
- Конфигурация и производительность сервера (PHP и веб-сервер)
- Плагины/Тема WordPress
- Кэширование HTML включено/выключено
Каждый из этих факторов добавляет дополнительную задержку ко времени, которое требуется вашему сайту для начала визуализации. Это означает, что все это суммируется. Дело не в том, что некоторые из этих факторов могут влиять на задержку, все эти факторы способствуют увеличению задержки! Поэтому можно предположить, что в идеальном сценарии все должно быть быстро, чтобы вы получили очень хорошее время до первого байта, а если что-то в этой цепочке занимает больше времени на обработку, ваше конечное время до первого байта пострадает. Это важно, потому что время до первого байта влияет на все, что вы или ваши читатели делают на вашем сайте. Каждый раз, когда читатель нажимает на какую-то ссылку, картинку, запись в блоге или страницу, время до первого байта будет учитываться. Вы можете видеть, что плохое время до первого байта означает, что читатель окажется в ситуации, похожей на геймера, подключенного к плохому серверу. Каждый клик будет сопровождаться значительной задержкой, что скажется на впечатлениях. Примечание: С этого момента я буду использовать аббревиатуру TTFB для обозначения времени до первого байта, чтобы немного ускорить процесс.
Время отклика DNS
Разрешение DNS – это первый фактор в уравнении. Всегда следите за тем, чтобы использовать хорошие DNS-серверы и чтобы они имели узлы, разбросанные по всему миру, для получения наилучшего разрешения. Хороший способ уменьшить TTFB на этом этапе – использовать хороший глобальный сервис, такой как CloudFlare, поскольку этот вид сервиса реализует кэширование глобального DNS. Этот метод чрезвычайно хорош для снижения TTFB за счет кэширования последующих разрешений.
Конфигурация сервера
Вторым шагом в задержке TTFB является фактический сервер. Здесь на первый план выходит ваш хостинг. Тип конфигурации веб-сервера, который он использует, и методы кэширования значительно уменьшат TTFB. Например, если на вашем сервере используется старый интерпретатор PHP 5.4, вы получите очень высокую задержку TTFB, тогда как использование современной конфигурации PHP 7.1 сократит это время в 2 и более раз. Это происходит потому, что интерпретатор PHP играет важную роль в процессе. Каждый раз, когда вы запрашиваете страницу сайта или сообщение блога, которое не кэшируется, серверу необходимо обработать PHP-файлы, чтобы преобразовать их в HTML-формат и вернуть вашему браузеру. Чем сложнее PHP-файлы, тем больше времени потребуется на их предварительную обработку и отправку обратно в браузер. Вы можете видеть, что производительность сервера также играет важную роль во всем процессе. Чем быстрее процессор и чем больше ресурсов выделяет вам хостинг, тем быстрее он будет обрабатывать эти файлы, и, следовательно, ваш TTFB будет меньше. Кроме того, если на вашем хостинге реализовано кэширование PHP, то при втором запросе это время еще больше сократится, так как будет предоставлена кэшированная версия файла вместо того, чтобы обрабатывать PHP-файл заново. Теперь вы видите, что существует 2 типа хостинга: общий (без кэширования) и эксклюзивный для WordPress, который обычно реализует механизм кэширования для PHP, уменьшая TTFB в процессе.
Плагины и тема WordPress
Третьим шагом в уравнении TTFB является ваш фактический сайт. Это самый важный фактор, и я собираюсь показать вам, почему. Обычно WordPress отдает вашему хостингу несколько PHP-файлов для обработки, и чем они сложнее, тем больше времени потребуется на обработку. WordPress обслуживается плагинами, и эти плагины добавляют дополнительный код к окончательной обработке PHP, поэтому, учитывая это, вы можете ясно видеть, что чем больше плагинов вы установили, тем больше времени потребуется вашему хостингу для их обработки, и, следовательно, ваш TTFB увеличится.
Чем меньше, тем лучше. Как правило, меньше плагинов – лучше. Конечно, один плохо настроенный плагин может быть гораздо хуже, чем 10 грамотно настроенных плагинов, или можно установить два плагина, которые будут конфликтовать. Но в целом, сокращение количества плагинов облегчает управление обновлениями и повышает скорость работы сайта. Вот пример разумного количества плагинов для установки.

Следующий пример может быть проблематичным (опять же – это частично зависит от того, что у вас установлено).

И, конечно, все, что преодолевает барьер в 30 плагинов, скорее всего, не лучшим образом скажется на вашей задержке. Вы можете быть уверены, что сайт с более чем 40 плагинами будет иметь очень высокий TTFB, даже если он размещен на впечатляющем хостинге, и я собираюсь показать вам, почему.
Кэширование HTML
Последний фактор является самым важным и связан с механизмом кэширования, который вы решите внедрить в свою установку WordPress. Хотя в WordPress существует несколько типов механизмов кэширования, наиболее эффективным из них является HTML-кэширование. Наличие хорошего плагина, такого как KeyCDN Cache Enabler, окажет огромное влияние на ваш TTFB, даже большее, чем сам хостинг. Он преобразует все эти файлы в HTML, так что после активации кэша вашим читателям не нужно будет проходить через препроцессор PHP на вашем хостинге, и только сам веб-сервер будет отвечать за обслуживание вашего контента. Вы можете еще больше ускорить этот процесс, если решите использовать хостинг, который включает nginx вместо apache в качестве основного веб-сервера, как я уже объяснял в этой статье.
Время до первого байта Тематические исследования: Почему это важно
Теперь позвольте мне показать вам, о чем мы говорим. Ниже приведены реальные примеры конфигураций веб-сайтов на различных серверах, а в конце приведена удобная сводка контрольных показателей.
Медленный веб-сайт на медленном сервере
Медленная работа сайта может стать неприятностью для TTFB, и если вы не заботитесь о хорошем хостинге, то будьте готовы к худшему из возможных исходов.

Давайте проанализируем этот сайт в деталях. Для этого я собираюсь использовать Pingdom Tools, поскольку это отличный инструмент, позволяющий увидеть TTFB. Фокус в том, чтобы открыть детализацию по первому запросу, сделанному к сайту.

Как вы можете видеть, TTFB сайта составляет не менее 4,2 секунды! Это означает, что проходит 4 полных секунды, пока вы получите хоть какое-то указание на то, что сайт действительно доступен. Теперь умножьте это время на все клики, которые вы собираетесь сделать на сайте, и вы увидите, насколько это может быть неприятно для читателя. Конечно, TTFB необходимо добавить к общему времени, которое требуется сайту для визуализации. Результат будет катастрофическим для производительности, так как иногда сайту потребуется до 7 секунд для правильной визуализации. К этому приводит сочетание нескольких факторов. Плохо оптимизированный сайт без механизма кэширования, очень медленный хостинг и полностью устаревший интерпретатор PHP, который все еще работает на PHP 5.4. Даже если сайт использует cloudflare в качестве внешнего механизма кэширования, ничего нельзя сделать, чтобы улучшить ситуацию, если ваш сайт и ваш хостинг не сотрудничают.
Быстрый веб-сайт на среднем сервере
Давайте посмотрим, что произойдет, если мы поместим очень быстрый сайт на средний сервер, использующий Apache и PHP 7.1

На сайте, на котором установлено менее 10 плагинов, без кэша, результат как минимум в 5 раз лучше, чем предыдущий. Вы можете видеть, что TTFB теперь установлен на 521 мс. Это означает, что сайту потребуется 0,5 секунды, чтобы начать рендеринг в вашем браузере, с момента, когда он отправляется с сервера, до момента, когда он достигает вашего компьютера.

Что происходит, когда мы активируем кэш на этом сайте? Происходит волшебство. Обычный средний сервер, работающий на Apache, может дать отличные результаты всего с 152 мс TTFB. Вы можете видеть, как сильно влияет на результаты хороший механизм кэширования WordPress.
Очень медленный веб-сайт на быстром сервере
Теперь давайте посмотрим на обратное. Что произойдет, если мы поместим очень медленный сайт на очень быстрый сервер.

Оптимизированному серверу под управлением Plesk с nginx и PHP 7.1.11 потребуется 1,29 секунды для рендеринга сайта, наполненного плагинами (более 27).

Но когда мы активируем кэширование на WordPress с помощью чудесного KeyCDN Cache Enabler, результат поражает воображение. У очень медленного сайта TTFB сократился всего до 400 мс.
Быстрый сайт на быстром сервере
Теперь рассмотрим оптимальную ситуацию. Быстрый сайт работает на быстром сервере.

Тот же сервер, который выдавал 1,29 секунды TTFB на медленном сайте, отвечает менее чем за 500 мс на быстром сайте без кэша.

Если мы включим кэширование, результаты будут просто потрясающими. Быстрый сервер в сочетании с быстрым сайтом с включенным кэшированием дает менее 150 мс TTFB!
Контрольные результаты
Давайте посмотрим результаты на одном большом графике для любителей бенчмарков.

Вы видите, что хостинг играет важную роль в снижении TTFB и улучшении задержки и воспринимаемой производительности вашего сайта, но то, что вы делаете с сайтом, оказывает наибольшее влияние на производительность.
Подведение итогов
Наличие хорошей метрики TTFB гарантирует вам быстрый и отзывчивый сайт, сократит общее время рендеринга и послужит отличной метрикой для определения производительности. Обычно, чем выше TTFB, тем медленнее работает ваш сайт. Иметь TTFB в виду, когда вы проводите сравнительный анализ своего сайта, крайне важно, поскольку это время также может быть использовано для определения узких мест в вашей установке WordPress. Вы можете выполнить простое упражнение: отключить все плагины и перейти на базовую тему, а затем снова измерить TTFB. Вы будете поражены результатами. Я хочу закончить эту статью, сказав, что это ни в коем случае не “единственная метрика для всех”, поскольку есть и другие факторы, которые необходимо учитывать, включая производительность базы данных, доступную пропускную способность и скорость сети. Но поскольку на TTFB обычно влияют все эти факторы, он является хорошим показателем узких мест в других областях. Надеюсь, вы воспользуетесь шансом поэкспериментировать с вашим TTFB. Оставляйте свои комментарии ниже. Мы будем рады услышать о вашем собственном тестировании или помочь с любыми вопросами, которые у вас могут возникнуть.