2.17.2.2. Час відповіді сервера (TTFB)
Час відповіді сервера (TTFB — Time To First Byte) — час до отримання першого байта (мережевого пакета) сторінки сайту після надсилання запиту з боку клієнта (наприклад, із браузера).
Це комплексний показник, який насамперед залежить від того, які операції виконуються на сервері під час обробки запиту. Великий час відповіді може бути пов'язаний з десятками чинників: логіка застосунку, повільна робота з базою даних, маршрутизація, програмна платформа, бібліотеки, нестача процесорної потужності або пам'яті.
Аналіз
Перевірити, що причиною підвищеного часу відповіді сервера є внутрішні процеси сайту (скрипти, запити до бази даних), а не загальні проблеми з сервером, простіше і швидше за все можна за допомогою максимально примітивного PHP-скрипта, наприклад, що виводить результати phpinfo.
Якщо спочатку заміряти TTFB для запиту, який передбачає участь скриптів сайту (зазвичай головна сторінка сайту, якщо він динамічний), а потім TTFB для запиту до примітивного скрипту, то різниця між отриманими результатами приблизно покаже чистий час роботи скриптів.
Поради:
- Використовуйте технічну перевірку сайту, щоб швидко перевірити час відповіді сервера.
- Використовуйте профілювальник PHP, щоб виміряти час виконання різних ділянок коду сайту.
Переконатися в тому, що сама по собі база даних також відпрацьовує швидко, можна, виконавши примітивні запити до неї, або хоча б просто перевіривши час відкриття будь-яких таблиць через phpMyAdmin.
Зменшення часу відповіді сервера
З боку сайту
Для зменшення часу відповіді сервера розробнику сайту (або залученому сторонньому профільному фахівцеві) варто самостійно провести аналіз операцій, що виконуються на сайті під час опрацювання запитів, і розглянути можливість їхньої оптимізації.
Найбільш прямий підхід — логування роботи скриптів. Тобто в скриптах, які виконуються щоразу в процесі завантаження сайту, проставити контрольні точки, в яких відзначати час, який знадобився для обробки тієї чи іншої ділянки коду. Приклади виведення часу обробки скрипта можна знайти у відкритих джерелах у мережі (наприклад, тут).
У разі наявності затримок, пов'язаних із запитами до бази даних, треба:
- Перевірити наявність повільнених запитів і, якщо такі присутні, вжити заходів щодо їх оптимізації.
- Постаратися визначити найважчі запити й оптимізувати їх за аналогією з інструкцією.
- Проаналізувати структуру самої бази даних і за необхідності провести роботи з її оптимізації за аналогією з інструкцією.
З боку хостингу
З боку хостингу допомогти деякою мірою зменшити час відповіді сервера можуть такі засоби:
- Зміна версії PHP на новішу, якщо код сайту з нею сумісний (особливо може бути помітний ефект переходу з PHP 5 на PHP 7).
- Підключення та налаштування додаткової послуги OPcache (кешування скомпільованого байт-коду скриптів в оперативній пам'яті, спеціальна підтримка з боку сайту не потрібна).
- Підключення та налаштування додаткової послуги Memcache(d) або Redis (кешування довільних даних в оперативній пам'яті, потребує підтримки з боку сайту).