Время ответа сервера и получения первого байта
Высокое значение времени ответа сервера может значительно уменьшать скорость загрузки сайта. Чтобы этого не допустить, необходимо провести ряд оптимизаций и при необходимости обеспечить сайт дополнительными ресурсами сервера.
Содержание
Что такое время ответа сервера?
После поступления HTTP-запроса веб-ресурса от клиента (браузера) сервер его обрабатывает, формирует и отправляет клиенту HTTP-ответ. Промежуток времени, в течение которого это происходит, называется время ответа сервера.
Время ответа сервера — величина, определяющая скорость формирования HTTP-ответа.
Что такое время получения первого байта?
Также время ответа сервера известно как время получения первого байта (First Byte Time, Time to First Byte, TtFB).
Время ответа сервера определяет, сколько занимает загрузка кода HTML для отображения страницы.
Google Developers
Каким должно быть время ответа сервера?
Понятие время ответа сервера стало популярным после появления сервиса PageSpeed Insights, который явно указывает на проблему при высоком значении данной величины.
Согласно рекомендациям в правилах PageSpeed Insights, время ответа сервера должно занимать не более 0.2 секунды:
Уменьшите время ответа сервера, чтобы оно составляло не более 200 мс.
Google Developers
Значение до 200 мс является реально достижимым для любого сайта, но зависит от большого числа факторов.
Как проверить время ответа сервера?
Проверка скорости ответа сервера осуществляется с помощью ряда соответствующих инструментов.
Сервис анализа скорости загрузки PageSpeed Insights
Самым простым и действенным способом проверить скорость ответа сервера сайта является вышеупомянутый сервис PageSpeed Insights.
Если значение величины превышает 200 мс, сервис отобразит рекомендацию «Сократите время ответа сервера», в подробностях к которой будет указано значение, определённое при проверке:
Инструменты разработчика в браузере
Время получения первого байта (TTfB) веб-страницы или любого её ресурса можно узнать в браузере с помощью инструментов для разработчиков. В браузерах Chrome и Firefox это осуществляется во вкладке Network (Сеть):
Сервис аналитики Яндекс.Метрика
Среди огромного количества аналитических данных, предоставляемых сервисом Яндекс.Метрика, есть мониторинг скорости загрузки веб-страниц, позволяющий отследить практически все временные интервалы загрузки сайта, а также проверить скорость ответа сервера.
Это полезная аналитическая информация по скорости загрузки сайта автоматически предоставляется для всех веб-страниц, на которых установлен счетчик.
Чтобы перейти к странице мониторинга скорости загрузки страниц сайта в Яндекс.Метрике:
- Перейдите на главную страницу сервиса.
Для этого необходимо быть авторизованным в аккаунте Яндекса. - Выберите нужный счетчик.
Он должен быть установлен на сайте. - Кликните Отчеты.
Откроется контекстное меню. - Выберите Стандартные отчеты → Мониторинг → Время загрузки страниц.
Под временем ответа сервера в Яндекс.Метрике подразумевается время получения первого байта (учитываются интервалы передачи HTTP-запроса и ответа).
Сервис проверки скорости загрузки WebPagetest
WebPagetest — один из самых популярных сервисов для проверки скорости загрузки веб-страниц, позволяющий легко определить значение времени получения первого байта как для страницы, так и для каждого отдельного её ресурса.
После анализа страницы сайта сервис отобразит степень оптимизации её скорости загрузки и значения всех интересующих нас величин, в числе которых First Byte Time:
В разделе «Waterfall View» представлен временной график очередности загрузки ресурсов проверенной веб-страницы. По клику по названию определённого ресурса во всплывающем окне будет отображена дополнительная информация, среди которой есть значение Time To First Byte, в данном случае отражающее именно время ответа сервера без учета времени отправки запроса. Чтобы узнать время получения первого байта для ресурса, необходимо сложить значения Time To First Byte и Request Start (время отправки запроса):
Также всю интересующую нас информацию по каждому ресурсу проверенной веб-страницы можно увидеть в виде таблицы на странице отчета в разделе «Request Details»:
От чего зависит скорость ответа сервера?
Большое время ответа может быть связано с десятками факторов: логика приложения, медленная работа с базой данных, маршрутизация, программная платформа, библиотеки, нехватка процессорной мощности или памяти.
Google Developers
Условно разделим упомянутые факторы на категории и рассмотрим их в частности. На скорость ответа сервера влияют:
- Тип хостинга
- Определяет мощность сервера, нагрузку на сервер, программное обеспечение и доступные ресурсы.
- Мощность сервера
- Зависит от аппаратного обеспечения, определяющего скорость обработки данных.
- Нагрузка на сервер
- Повышается с ростом посещаемости сайта.
- Настройки сервера
- Зависят от используемого на сервере программного обеспечения.
- Особенности сайта
- Определяют число и сложность операций, выполняемых сервером при обработке запросов.
Как уменьшить время ответа сервера?
Уменьшить время ответа сервера и получения первого байта до минимума можно посредством оптимизации сервера и самого сайта:
Тип хостинга
Хостинг — услуга предоставления виртуального пространства для размещения сайта в Интернете.
Существует 3 вида хостинга:
- виртуальный хостинг,
- виртуальный выделенный сервер,
- выделенный сервер.
Тип хостинга может влиять на скорость загрузки сайта в целом и время ответа сервера в частности: по мере роста посещаемости увеличивается число запросов к серверу, в результате он может обрабатывать их медленнее. Поэтому менять тип хостинга следует либо поэтапно, либо сразу размещать сайт на виртуальном выделенном сервере, если не стоит финансовый вопрос.
Виртуальный хостинг
Самый бюджетный вариант хостинга, подходящий для большинства новых сайтов, которые не создают большой нагрузки на сервер.
Виртуальный хостинг подразумевает размещение сайта на сервере, содержащем множество других сайтов-соседей. Все эти сайты используют ресурсы сервера, конкурируют между собой, и иногда рост посещаемости одного или нескольких сайтов увеличивает нагрузку на сервер, тем самым «тормозя» его работу, в результате чего от низкой скорости обработки данных сервером все сайты могут грузиться очень медленно.
Долгий ответ сервера для сайта, размещенного на виртуальном хостинге, может быть по независящим от сайта причинам.
Подводя итог: виртуальный хостинг подходит для небольшого сайта с малой посещаемостью или сайта на этапе развития. Если по мере роста посещаемости сайта увеличивается время ответа сервера, то необходимо переносить сайт на виртуальный выделенный сервер.
Виртуальный выделенный сервер
Виртуальный выделенный сервер, также называемый VPS (Virtual Private Server) или VDS (Virtual Dedicated Server), является эмулятором выделенного сервера. Это оптимальный вид хостинга для серьезных веб-проектов, исключающий возможность не зависящей от сайта нагрузки на сервер, т. к. под сайт выделяется определённое тарифом количество его ресурсов.
Как правило, VPS-хостинга бывает предостаточно для сайта любого уровня, т. к. он обеспечивает сайт определёнными тарифом ресурсами и подразумевает возможность их расширения по мере необходимости.
Выделенный сервер
Самый дорогостоящий тип хостинга, при котором в аренду сдаётся физический сервер целиком. Как правило, для содержания сайта такая услуга не требуется.
Аппаратное обеспечение и мощность сервера
Мощность сервера определяет его аппаратное обеспечение, а именно:
- количество ядер процессора (CPU),
- объем оперативной памяти (RAM),
- объем и тип жесткого диска.
В частности, при выборе хостинга рекомендуется обращать внимание на обеспеченность серверов SSD-дисками, которые являются более производительными по сравнению с морально устаревшими HDD-дисками.
При выборе VPS-хостинга процессор, объем оперативной памяти и жесткого диска определяются тарифом.
Программное обеспечение и настройка сервера
Установленное программное обеспечение и грамотная его настройка могут значительно влиять на скорость обработки запросов сервером.
Большинство динамических сайтов для генерации своих страниц используют PHP, оптимизация работы которого позволяет увеличить скорость обработки данных.
Версия PHP
Чем выше версия PHP, тем скорее выполняется соответствующий код. Но следует иметь ввиду, что некоторые скрипты сайта могут быть написаны под более раннюю версию PHP и не будут функционировать при активации новой версии.
Выбор версии PHP предусмотрен в панели управления хостингом:
Если возможность выбора не предоставляется, следует обратиться в службу технической поддержки хостинг-провайдера.
Акселераторы (прекомпиляторы) PHP
Это модули PHP, активация которых позволяет увеличить скорость выполнения PHP-скриптов за счет кэширования скомпилированного байт-кода.
Как правило, акселераторы PHP уже предустановлены и активированы на серверах виртуального хостинга.
На VPS и выделенных серверах акселераторы, как и другие дополнительные модули PHP, необходимо устанавливать и активировать по требованию или самостоятельно, в зависимости от тарифа и хостинг-провайдера.
Степень нагрузки на сервер
Нагрузка на сервер растёт вместе с числом HTTP-запросов, которые на него поступают.
Чем выше посещаемость сайта, тем выше нагрузка на сервер.
Как правило, при естественном росте популярности сайта его посещаемость растёт постепенно и с течением времени это будет отражаться на времени ответа сервера, замедляя скорость загрузки сайта.
Если все этапы оптимизации скорости обработки запросов сервером были выполнены, то решением является смена типа хостинга: если в текущий момент используется услуга виртуального хостинга, то необходимо перенести сайт на виртуальный выделенный сервер (VPS). Если сайт уже размещен на VPS-хостинге, то требуется расширить предоставленные для сайта ресурсы.
Особенности генерации страниц сайта
На время ответа сервера может влиять сложность генерации веб-страниц.
Статические сайты
Статические веб-страницы хранятся на сервере в исходном виде: серверу не требуется тратить свои ресурсы на их формирование.
Схема передачи статической страницы:
- клиент отправляет запрос на страницу,
- сервер определяет страницу и отправляет клиенту.
Динамические сайты
Динамические страницы генерируются на сервере и сложность их формирования может повышать нагрузку на сервер.
Схема передачи динамической страницы:
- клиент отправляет запрос на страницу;
- сервер обращается к определённому числу файлов, генерирующих страницу;
- происходит обращение к базе данных определённое для страницы число раз;
- сгенерированная страница отправляется клиенту.
Количество скриптов (п. 2) и обращений к серверу баз данных (п. 3) в процессе генерации определяет нагрузку на сервер. А при большом количестве запросов к серверу одновременно (при большой посещаемости сайта) эта нагрузка увеличивается в разы.
Снизить нагрузку на сервер, образующуюся в процессе генерации динамических страниц, поможет их серверное кэширование, при котором копии сгенерированных страниц сохраняются на сервере и отдаются при запросах в течение определённого времени. Серверное кэширование активируется в настройках применяемой CMS или с помощью сторонних расширений.
Выводы и заключение
- Время ответа сервера должно составлять не более 0.2 секунды.
- При нехватке ресурсов время ответа сервера может значительно превышать значение в 0.2 секунды, тем самым сильно замедляя загрузку сайта.
- Оптимизируйте время ответа сервера посредством:
- настройки программного обеспечения сервера,
- активации кэширования динамических страниц на сервере.
- Если работа сайта и ПО сервера оптимизированы, но время получения первого байта слишком велико, то необходимо обеспечить сайт дополнительными ресурсами посредством смены типа хостинга или расширения тарифа.