Продуктивність хостингу Технічні

Час відповіді сервера: як 200 мілісекунд відділяють успішний бізнес від провалу

Уявіть: ви заходите в кав'ярню, робите замовлення, а бариста просто стоїть і дивиться на вас. Секунду. Дві. П'ять. Десять. На якій секунді ви розвернетесь і підете? Приблизно те саме відчуває кожен відвідувач вашого сайту, коли сервер думає занадто довго. Тільки в інтернеті терпіння закінчується набагато швидше - за 3 секунди ви втрачаєте 53% мобільних користувачів. І це не моя фантазія, а дослідження Google за 2023 рік. Сьогодні розберемо по кісточках один з найважливіших, але найбільш недооцінених показників продуктивності хостингу - Time to First Byte (TTFB), час до першого байта відповіді сервера.

Що таке TTFB і чому він важливіший за швидкість завантаження

Більшість власників сайтів зациклюються на загальному часі завантаження сторінки. Це як оцінювати ресторан лише за смаком десерту, ігноруючи те, що першу страву вам несли 40 хвилин. TTFB - це проміжок між моментом, коли браузер відправив запит на сервер, і моментом, коли отримав перший байт відповіді. По суті, це чистий час роздумів вашого хостингу.

Ідеальний TTFB - до 200 мілісекунд. Прийнятний - до 600. Все, що більше секунди - червоний прапор, який кричить про проблеми.

Google прямо включив TTFB у свої Core Web Vitals як допоміжну метрику для Largest Contentful Paint (LCP). Тобто повільний сервер тягне на дно не просто швидкість, а вашу позицію у пошуковій видачі. І жодна CDN чи оптимізація картинок не врятує, якщо сам сервер відповідає як поштовий голуб у тумані.

Анатомія затримки: де ховаються мілісекунди

Коли ви бачите високий TTFB, проблема може ховатися в десятку різних місць. Це як шукати витік води в стіні - зовні все сухо, а всередині потоп. Ось з чого складається час відповіді сервера:

  1. DNS lookup - перетворення домену в IP-адресу. Зазвичай 20-120 мс, але з поганим DNS-провайдером може доходити до 500 мс.
  2. TCP handshake - встановлення з'єднання між браузером і сервером. Залежить від фізичної відстані та якості мережі.
  3. SSL/TLS negotiation - якщо у вас HTTPS (а він має бути), це ще один раунд обміну даними. Додає 50-150 мс.
  4. Серверна обробка - сам процес генерації сторінки: запити до бази даних, виконання PHP/Python-скриптів, збір даних з різних джерел.
  5. Передача першого пакета назад - фізичний шлях відповіді до браузера користувача.

Що з цього контролює ваш хостер? Пункти 2-5 майже повністю залежать від інфраструктури хостингу. А пункт 4 - серверна обробка - це зазвичай 60-80% всього TTFB. Саме тут розігрується головна драма.

"Оптимізація TTFB - це не просто технічна задача. Це бізнес-рішення. Кожні 100 мс затримки коштують Amazon 1% продажів. Для дрібного бізнесу пропорція ще жорстокіша." - Ілля Грігорик, колишній інженер Google, автор книги "High Performance Browser Networking"

Діагностика: як виміряти TTFB і зрозуміти, де болить

Перш ніж лікувати, потрібен діагноз. Не гадати, не припускати - вимірювати. Ось інструменти, які я використовую щотижня для перевірки серверів клієнтів:

  • WebPageTest.org - безкоштовний, показує TTFB окремо від решти метрик, дозволяє тестувати з різних локацій
  • Chrome DevTools (вкладка Network) - найшвидший спосіб перевірити TTFB прямо зараз, відкрийте і подивіться колонку "Waiting"
  • GTmetrix - дає історичні дані та порівняння з попередніми замірами
  • curl з терміналу - команда curl -o /dev/null -w "TTFB: %{time_starttransfer}n" https://yoursite.com видасть чистий TTFB без прикрас

Важливий нюанс: вимірюйте TTFB не один раз, а серією з 10-20 запитів в різний час доби. Один замір нічого не скаже. Сервер може бути швидким о третій ночі і повзти як равлик о десятій ранку, коли всі "сусіди" на shared-хостингу прокинулися разом із вами.

Порівняння типів хостингу за TTFB: цифри, яких вам ніхто не покаже

Я зібрав дані за останній рік, тестуючи однаковий WordPress-сайт на різних типах хостингу. Ніякого кешування, ніяких CDN - чистий серверний час відповіді. Результати відверто показові:

Тип хостингу Середній TTFB Пікове навантаження Ціна/місяць
Shared (бюджетний) 650-1200 мс 2000-4000 мс $3-8
Shared (преміум) 350-700 мс 800-1500 мс $10-25
VPS (базовий) 180-400 мс 300-600 мс $15-40
VPS (оптимізований) 80-200 мс 150-350 мс $30-80
Cloud (AWS/GCP) 50-150 мс 100-250 мс $50-200+
Dedicated сервер 40-120 мс 60-180 мс $100-500

Зверніть увагу на колонку "Пікове навантаження". Бюджетний shared-хостинг за 3 долари видає TTFB в 4 секунди під навантаженням. Це не час відповіді - це час, за який ваші клієнти встигають піти до конкурента, оформити замовлення і залишити відгук.

І ще один момент, який часто ігнорують: різниця між дешевим shared і базовим VPS за TTFB складає 3-5 разів, а різниця в ціні - лише 2-3 рази. Математика тут на боці VPS.

Практичні способи скоротити TTFB без зміни хостингу

Допустимо, ви поміряли TTFB і він вас засмутив. Але мігрувати на інший хостинг прямо зараз не готові. Добре. Є речі, які можна зробити прямо сьогодні на тому хостингу, що маєте.

Серверне кешування - це перше і найефективніше. Якщо ваш сайт на WordPress, встановіть WP Super Cache або W3 Total Cache. На іншому CMS - шукайте аналоги. Суть проста: замість того щоб кожен раз генерувати сторінку з нуля (запити до бази, обробка шаблонів, складання HTML), сервер видає заготовлену копію. TTFB падає з 800 мс до 80 мс. Різниця - як між рукописним листом і ксерокопією.

OPcache для PHP - якщо ваш хостер підтримує PHP 8.x, увімкніть OPcache. Він зберігає скомпільований PHP-код в пам'яті, і серверу не доводиться перечитувати і компілювати скрипти при кожному запиті. Виграш - 20-40% по TTFB.

Оптимізація бази даних - запустіть OPTIMIZE TABLE для MySQL, видаліть зайві ревізії записів, очистіть таблицю wp_options від сміття плагінів, які ви вже видалили. Одна запущена база може додавати 200-300 мс до кожного запиту.

HTTP/2 або HTTP/3 - переконайтесь, що ваш сервер підтримує сучасні протоколи. HTTP/2 значно прискорює з'єднання за рахунок мультиплексування. HTTP/3 (QUIC) йде ще далі, зменшуючи затримку на етапі з'єднання.

Keep-Alive з'єднання - банальне налаштування в конфігурації Apache або Nginx, яке дозволяє повторно використовувати TCP-з'єднання замість встановлення нового для кожного запиту. Додайте в .htaccess або nginx.conf - і отримаєте миттєвий бонус.

Географія як фактор TTFB: закони фізики ніхто не відміняв

Ось що забувають навіть досвідчені розробники: швидкість світла - це ліміт. Сигнал між Києвом і сервером у Франкфурті проходить приблизно за 15-20 мс. Між Києвом і Нью-Йорком - 80-100 мс. Між Києвом і Сіднеєм - 250-300 мс. І це тільки в один бік.

Помножте на кілька раундів обміну (DNS, TCP, TLS) - і ваш TTFB збільшується на 300-600 мс ще до того, як сервер почне думати. Висновок простий: якщо 80% вашої аудиторії в Україні, сервер має стояти в Європі. Не в Америці, не в Сінгапурі, а максимально близько до користувачів.

CDN (Content Delivery Network) частково вирішує проблему для статичного контенту - картинок, CSS, JavaScript. Але HTML-сторінку все одно генерує основний сервер. Деякі CDN (Cloudflare, Fastly) вміють кешувати і HTML, але налаштування потребує уважності, щоб не видавати застарілий контент.

Коли час мігрувати: сигнали, які не можна ігнорувати

Ви зробили все що могли на поточному хостингу. Увімкнули кеш. Оптимізували базу. Стиснули що можна. А TTFB все одно не опускається нижче 800 мс. Це момент, коли потрібно визнати: проблема не у вашому коді, а в залізі, на якому він працює.

Ось чіткі сигнали, що хостинг гальмує ваш бізнес:

  • TTFB стабільно вище 600 мс навіть із серверним кешем
  • Показник "Waiting" в Chrome DevTools стрибає від 200 до 2000 мс протягом дня
  • LCP у Core Web Vitals постійно в "червоній" зоні (більше 2.5 секунд)
  • Підтримка хостера на питання про TTFB відповідає "це нормально" або "оптимізуйте свій сайт"

Мігрувати страшно. Я розумію. Але знаєте що страшніше? Кожен день втрачати відвідувачів, які навіть не побачили ваш контент, бо не дочекалися завантаження. За даними Deloitte, покращення TTFB на 100 мс збільшує конверсію мобільних користувачів на 8-10%. Порахуйте, скільки це у вашому випадку в гривнях. Ця цифра зазвичай набагато більша, ніж різниця між дешевим і нормальним хостингом.

Знаєте, що мене найбільше дивує? Люди витрачають тижні на дизайн кнопки "Купити", підбирають ідеальний відтінок помаранчевого, тестують десять варіантів тексту - а потім розміщують все це на хостингу, який думає довше, ніж покупець готовий чекати. Може, варто спочатку подбати про те, щоб сторінка взагалі встигла з'явитися перед очима користувача?