Оптимізація протоколів: HTTP/2, HTTP/3 (QUIC) для швидкого сайту

Сайт гальмує під піковим навантаженням, і клієнти йдуть, не дочекавшись сторінки. Ми налаштовуємо віддачу під ключ: підбираємо схему під ваш профіль трафіку й доводимо час відповіді до стабільного результату. Час віддачі каталогу та карток скорочується в рази.
Часті запитання

Налаштування HTTP/2 не прискорило сайт: де втрачається швидкість віддачі

Увімкнений HTTP/2 у конфігурації ще не означає, що сторінка поїде швидше.

Протокол дає мультиплексування — десятки ресурсів ідуть в одному з’єднанні, — але якщо на периметрі стоїть проксі або балансувальник, який термінує шифрування й іде до бекенду окремим каналом, уся вигода залишається на папері. Зовні все налаштовано, а повільна віддача сторінок пояснюється зовсім іншою ділянкою.

Спочатку дивимося на затримку першого байта від застосунку. Мультиплексування не рятує, коли відповідь формується довго: потоки вже відкриті, але передавати нічого.

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

Другий шар — повторне використання з’єднань. Якщо проксі розриває тривалі з’єднання або перезбирає заголовки без стиснення, клієнт піднімає канал заново: рукостискання, узгодження шифрування, знову очікування.

Зайві з’єднання до сервера повертають ту саму картину ривками, від якої йшли від попередньої версії протоколу.

Третій шар — сам периметр: вузьке місце на периметрі видно як рівний стелю за кількістю одночасних потоків і зростання затримки під навантаженням.

Підкрутка прапорців тут не допомагає — потрібен розбір ланцюжка: де термінується з’єднання, що відбувається з пріоритетами запитів, де осідає кеш. Далі показуємо, як це знаходиться і що змінюється в конфігурації.

Що дає налаштування HTTP/2: віддача сторінок без черги запитів

Налаштування HTTP/2 змінює саму схему завантаження сторінки: замість кількох паралельних з’єднань на домен браузер тримає одне й мультиплексує потоки всередині нього.

Черга запитів перестає бути вузьким місцем — ресурси віддаються одночасно, а не порціями по шість штук, і час віддачі сторінки падає завдяки зниклому простою, а не завдяки зростанню каналу.

Стиснення заголовків прибирає другу приховану витрату: повторювані куки, user-agent і заголовки безпеки передаються посиланнями на таблицю з’єднання, а не повним текстом на кожен із сотні ресурсів.

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

Стандарт описано в IETF, і поведінку серверів там же обумовлено: без явних ваг клієнт здогадується сам, і картинка нерідко обганяє CSS.

Дивитися після ввімкнення варто на дві величини: час віддачі сторінки під реальним навантаженням і частку повторних з’єднань — якщо вона зростає, десь рветься keep-alive або заважає проміжний проксі.

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

Коректна конфігурація дає передбачувану віддачу під піком: сторінка не деградує сходинками, коли десятки клієнтів конкурують за з’єднання. Звідси — розбір, як це перевіряється й закріплюється в інфраструктурі.

Порівняння підходів: HTTP/2, HTTP/3 і гібридна схема віддачі

Вибір версії протоколу — не «увімкнути нове й подивитися», а питання сумісності з реальним парком клієнтів.

HTTP/2 поверх захищеного каналу дає мультиплексування запитів і стиснення заголовків, але всі потоки йдуть через один TCP-канал: втрата пакета зупиняє завантаження всієї сторінки.

HTTP/3 і QUIC переносять керування потоками в транспорт — у мобільних мережах із втратами довантаження помітно швидше.

Гібридна схема віддачі знімає ризик різкого переходу: транспорт оголошується клієнту, і він сам вибирає підтримуваний варіант, а старі браузери й корпоративні проксі продовжують працювати по HTTP/2.

Варіант Коли підходить Обмеження
HTTP/2 поверх захищеного каналу Неоднорідний парк клієнтів, вузьке місце — відповідь бекенду Один TCP-канал: втрати пакетів гальмують усі потоки
Гібридна схема віддачі Більшість проєктів: новий транспорт основний, робочий — резервний Потрібен контроль балансувальника й метрики з двох транспортів
Повний перехід на HTTP/3 і QUIC Висока частка мобільного трафіку й мереж із втратами Частина корпоративних мереж блокує UDP — без явного відкату не можна
Поточний HTTP/1.1 Внутрішні сервіси з малою кількістю паралельних запитів Немає мультиплексування, стеля за кількістю з’єднань

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

Порядок робіт: від аудиту з’єднань до передачі регламентів

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

Сім кроків

  1. Аудит з’єднань — з’ясовуємо, які версії протоколу узгоджуються з реальними клієнтами, де завершується шифрування й які проміжні вузли заважають мультиплексуванню.
  2. Зняття замірів затримок — фіксуємо базову лінію: час встановлення з’єднання, кількість мережевих обходів до першої відповіді, частку запитів за новим протоколом.
  3. Схема проходження трафіку — шлях запиту від клієнта до застосунку: балансувальник, зворотний проксі, мережа доставки, кеш. Без неї налаштування йде навпомацки.
  4. Налаштування периметра — вмикаємо протокол на вході, правимо пріоритети потоків, ліміти одночасних запитів і таймаути; конфігурація версіонується.
  5. Перевірка на копії трафіку — дзеркалимо потік і проганяємо навантажувальні сценарії, порівнюючи з базовою лінією: помилки узгодження видно до випуску.
  6. Випуск і спостереження — вмикаємо на частці трафіку, стежимо за часткою успішних з’єднань і часом відповіді; відкат — однією правкою конфігурації.
  7. Передача регламентів — схема, конфігурації в системі контролю версій, чек-лист діагностики й порядок відкату залишаються у вашої команди.

Заміри до й після переходять замовнику: за ними видно, що саме дав перехід і чи є сенс рухатися до третьої версії протоколу.

Комплект передачі: конфігурації, схеми й регламент відкату

Після робіт у замовника залишається не звіт, а робочий комплект: файли, за якими живе прод, і документи, за якими інженер супроводу повторить або відкотить будь-яку зміну.

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

  • Карта з’єднань: які домени й піддомени йдуть через який вузол, де термінується шифрування, для яких клієнтів увімкнено новий протокол, а для яких свідомо залишено попередній.
  • Конфігурації серверів і зворотного проксі: робочі файли з коментарями, винесені параметри пріоритизації потоків, таймаутів і розмірів буферів — із позначкою, під який профіль трафіку вони підібрані.
  • Схема балансування: як розподіляється навантаження між вузлами, як перевіряється їхня доступність, що відбувається при відмові одного з них і як швидко трафік іде на резерв.
  • Правила кешування: що віддає периметр, що клієнт, окремі політики для статики й для API, щоб роздача не сперечалася з новим протоколом.
  • Регламент відкату: за якою метрикою вважаємо зміну шкідливою, хто ухвалює рішення, якою командою повертається попередній профіль і скільки це займає за фактом.
  • Інструкція для супроводу: типові збої, що дивитися в метриках, порядок дій і точки ескалації.
  • Набір перевірок і заміри до/після: скрипт підтверджує, що з’єднання піднімається потрібним протоколом і час відгуку не деградував.

Кейс: час віддачі каталогу скоротився втричі

Каталог меблів — кілька сотень тисяч позицій, сторінка категорії збирається з десятків запитів до статики, шрифтів і даних. У спокійному режимі віддача займала 2,4 с, а на розпродажі, коли трафік зростав у шість разів, — до 9 с.

До семи відсотків запитів завершувалися помилкою шлюзу: пул з’єднань на периметрі закінчувався, і черга запитів не доходила до застосунку.

Що змінювали на периметрі

Увімкнули HTTP/2: запити однієї сторінки йдуть по єдиному з’єднанню, стиснення заголовків прибирає повторювані куки й метадані, пріоритети віддають смугу критичним ресурсам.

Для мобільного сегмента додали HTTP/3 поверх QUIC — втрата пакета більше не гальмує інші потоки, а повернення в сесію не вимагає повного узгодження шифрованого каналу заново.

Паралельно налаштували пул з’єднань до застосунку й keep-alive так, щоб з’єднання перевикористовувалося, а не перестворювалося під кожен запит.

Що вийшло

Час віддачі каталогу під піковим навантаженням — 0,8 с, втричі менше. Частка помилок шлюзу впала до 0,1 %, і пішов цілий клас відмов: сторінка перестала залежати від того, скільки з’єднань браузер тримає на домен.

Вузьке місце змістилося з транспорту на рендеринг карток — це вже окрема задача з іншим бюджетом часу.

Коли перехід на HTTP/3 дає виграш, а коли ні

Відмінність HTTP/3 від HTTP/2 — у транспорті, а не в заголовках.

Другий працює поверх TCP, де одна втрата пакета зупиняє доставку всіх паралельних запитів до відновлення вікна, а третій іде поверх QUIC: потоки незалежні один від одного, рукостискання й установлення шифрованого каналу суміщені. Звідси правило — виграш тим помітніший, чим гірший канал.

У мобільних мережах і на далеких маршрутах втрати в 2–5 % і зайві кругові обходи складаються в секунди очікування.

Скорочення рукостискання й відсутність блокування черги зменшують час до першого байта і 95-й перцентиль завантаження, тоді як на стабільному каналі в межах одного міста різниця йде в шум, і налаштування HTTP/2 дає той самий результат за меншої складності.

Підтримка на боці клієнта неоднорідна: актуальні браузери вміють, а вбудовані компоненти застосунків, старі бібліотеки й корпоративні проксі — часто ні, частина фільтрів трафіку блокує UDP цілком.

Тому HTTP/2 залишається базовим рівнем, а HTTP/3 вмикається як надбудова й у разі невдачі відкочується автоматично.

Готовність інфраструктури перевіряємо до ввімкнення: балансувальник і міжмережевий екран пропускають UDP, коректно віддається Alt-Svc, метрики знімаються за перцентилями, а не за середнім.

Cloudflare та інші мережі доставки кешують відповідь однаково для обох версій — прискорення йде лише на шляху до клієнта, а не в підготовці сторінки.

Підсумок: публічний сайт із мобільною аудиторією й розподіленою географією виграє від HTTP/3 за замовчуванням з автоматичним відкатом на HTTP/2. Для сервісів у межах одного ЦОД і трафіку стабільним каналом приріст губиться в проміжних вузлах і кеші.

Технічні сумніви перед зміною протоколу віддачі

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

Чи не зламається балансування навантаження?

Балансувальник має працювати на прикладному рівні й узгоджувати протокол — інакше з’єднання піде на HTTP/1.1. Мультиплексування знижує кількість паралельних сесій, тому перевірки живості й ліміти на вузол переналаштовують.

Як це впливає на кешування?

Правила кешу й заголовки валідації не змінюються — змінюється середовище: CDN і проміжні вузли мають підтримувати новий протокол, а об’єднання запитів до домену ускладнює розділення кешу.

Що з проміжними проксі?

Корпоративні проксі й системи інспекції трафіку часто обривають з’єднання під час узгодження. Їх перевіряють на тестовому контурі, а на бою залишають автоматичний відкат на HTTP/1.1.

Чи можна впроваджувати поетапно?

Так. Протокол вмикають на окремому вузлі або частці трафіку, порівнюють час віддачі й лише потім розширюють охоплення. Відкат — перемикання налаштування на вузлі, без перезбирання застосунку.

Старі клієнти перестануть працювати?

Ні. Версія узгоджується під час встановлення з’єднання, і клієнт без підтримки отримує HTTP/1.1. Умова одна — коректний сертифікат і однаковий набір ресурсів на обох гілках.

Обговоримо задачу: надішліть схему віддачі трафіку

Щоб розмова була предметною, а не про побажання, починаємо з поточної картини віддачі трафіку: що стоїть перед застосунком, де термінується шифрування, які домени й піддомени обслуговуються.

За цими даними вже видно, де вузьке місце — в узгодженні з’єднань, стисненні, кешуванні статики чи в маршрутизації між сервісами, і що заважає перейти на HTTP/2 і HTTP/3. Надішліть те, що є під рукою, — вичищена документація не потрібна:

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

Далі відповідаємо у два кроки. Спочатку — короткий розбір: які правки потрібні на кожному шарі й у якому порядку їх безпечно вносити. Потім повертаємося з планом впровадження: склад робіт за етапами, оцінка строків, точки відкату й спосіб перевірки результату на живому трафіку.

Опишіть задачу й додайте те, що є, — повернемося з оцінкою та планом робіт.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139