2.17.2.2. Час відповіді сервера (TTFB)

Час відповіді сервера (TTFB — Time To First Byte) — час до отримання першого байта (мережевого пакета) сторінки сайту після надсилання запиту з боку клієнта (наприклад, із браузера).

Це комплексний показник, який насамперед залежить від того, які операції виконуються на сервері під час обробки запиту. Великий час відповіді може бути пов'язаний з десятками чинників: логіка застосунку, повільна робота з базою даних, маршрутизація, програмна платформа, бібліотеки, нестача процесорної потужності або пам'яті.

Перевірити, що причиною підвищеного часу відповіді сервера є внутрішні процеси сайту (скрипти, запити до бази даних), а не загальні проблеми з сервером, простіше і швидше за все можна за допомогою максимально примітивного PHP-скрипта, наприклад, що виводить результати phpinfo.

Якщо спочатку заміряти TTFB для запиту, який передбачає участь скриптів сайту (зазвичай головна сторінка сайту, якщо він динамічний), а потім TTFB для запиту до примітивного скрипту, то різниця між отриманими результатами приблизно покаже чистий час роботи скриптів.

Поради:

Переконатися в тому, що сама по собі база даних також відпрацьовує швидко, можна, виконавши примітивні запити до неї, або хоча б просто перевіривши час відкриття будь-яких таблиць через phpMyAdmin.

Для зменшення часу відповіді сервера розробнику сайту (або залученому сторонньому профільному фахівцеві) варто самостійно провести аналіз операцій, що виконуються на сайті під час опрацювання запитів, і розглянути можливість їхньої оптимізації.

Найбільш прямий підхід — логування роботи скриптів. Тобто в скриптах, які виконуються щоразу в процесі завантаження сайту, проставити контрольні точки, в яких відзначати час, який знадобився для обробки тієї чи іншої ділянки коду. Приклади виведення часу обробки скрипта можна знайти у відкритих джерелах у мережі (наприклад, тут).

У разі наявності затримок, пов'язаних із запитами до бази даних, треба:

  • Перевірити наявність повільнених запитів і, якщо такі присутні, вжити заходів щодо їх оптимізації.
  • Постаратися визначити найважчі запити й оптимізувати їх за аналогією з інструкцією.
  • Проаналізувати структуру самої бази даних і за необхідності провести роботи з її оптимізації за аналогією з інструкцією.

З боку хостингу допомогти деякою мірою зменшити час відповіді сервера можуть такі засоби:

  1. Зміна версії PHP на новішу, якщо код сайту з нею сумісний (особливо може бути помітний ефект переходу з PHP 5 на PHP 7).
  2. Підключення та налаштування додаткової послуги OPcache (кешування скомпільованого байт-коду скриптів в оперативній пам'яті, спеціальна підтримка з боку сайту не потрібна).
  3. Підключення та налаштування додаткової послуги Memcache(d) або Redis (кешування довільних даних в оперативній пам'яті, потребує підтримки з боку сайту).
Зміст