8.1.1 Протокол HTTP/2 та його підтримка

TheHost HTTP2 Banner

HTTP/2 (скор. HyperText Transfer Protocol/2) — друга велика версія мережевого протоколу HTTP, яка використовується для доступу до ресурсів всесвітньої мережі Інтернет.

Необхідність створення HTTP/2 виникла через обмеження, з якими зіткнувся HTTP/1.x у контексті сучасних вимог до веб-додатків та інтернет-трафіку. Протокол HTTP/1.x, незважаючи на свою значущість у розвитку мережевих технологій, став відчувати обмеження, такі як недостатня продуктивність та ефективність передачі даних.

Одним із важливих етапів у розвитку HTTP/2 було впровадження технології SPDY (від англ. “SPeeDY”), розробленої Google для покращення продуктивності веб-додатків. SPDY стало відправною точкою для розробки HTTP/2, і багато його концепцій та ідей були інтегровані в новий протокол.

Коротко, реалізація HTTP/2 передбачає такі переваги:

  • Зменшене навантаження на мережу;
  • Низькі витрати на парсинг даних;
  • Покращена продуктивність;
  • Більш ефективна обробка даних між клієнтом та сервером;
  • Зворотня сумісність із HTTP/1.x.

Таким чином, активація HTTP/2 в більшості випадків призводить до прямого підвищення швидкості завантаження сторінок Вашого сайту для відвідувачів.

Протестуємо це на максимально простій сторінці шаблону WordPress. з множиною (30) однакових зображень.

Без увімкненого протоколу HTTP/2 отримуємо: DOMContentLoaded: 732 ms, Load: 1.42 s та Finish: 2.14 s.

HTTP/1.x

З увімкненим HTTP/2 отримуємо: DOMContentLoaded: 580 ms, Load: 1.27 s та Finish: 2.08 s.

HTTP/2

Заміри були виконані на найпростішому прикладі з можливих. В реальності, переваги використання HTTP/2 стають все помітнішими у міру збільшення “ваги” Ваших сторінок.

Ключові можливості HTTP/2 у порівнянні з HTTP/1.1

Мультиплексування (Multiplexing)

HTTP/1.1: У HTTP/1.1 кожен запит вимагає свого власного TCP-з’єднання, що призводить до безлічі невеликих паралельних запитів, званих “шлейфами” (head-of-line blocking).

HTTP/2: HTTP/2 дозволяє надсилати безліч запитів та відповідей через єдине TCP-з’єднання одночасно. Це усуває проблему “шлейфів” та дозволяє ефективно використовувати доступну пропускну спроможність мережі.

Стиск заголовків (Header Compression)

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

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

Приоритизація потоків (Stream Prioritization)

HTTP/1.1: Запити в HTTP/1.1 обробляються в порядку їх надходження, що може призвести до затримок обробки важливих запитів.

HTTP/2: HTTP/2 дозволяє встановлювати пріоритети для потоків, визначаючи, які запити слід обробляти насамперед. Це дозволяє більш ефективно використовувати ресурси сервера та покращує продуктивність веб-додатків.

Server Push

HTTP/1.1: У HTTP/1.1 сервер не може попередньо надсилати ресурси клієнту без явного запиту.

HTTP/2: HTTP/2 підтримує функцію Server Push, яка дозволяє серверу попередньо відправляти ресурси, які клієнт, ймовірно, запросить у майбутньому. Це прискорює завантаження сторінок і покращує користувальницький досвід.

Бінарний формат передачі даних

HTTP/1.1: HTTP/1.1 використовує текстовий формат передачі даних, що може призводити до надмірності та неефективності при передачі великих обсягів даних.

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

Підтримка HTTP/2 та як включити його на наших послугах

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

Додатково: веб-сервери, що підтримують HTTP/2
  • Nginx з версії 1.9.5;
  • Apache з версії 2.4.17 підтримує HTTP/2 за допомогою модуля mod_http2 module;
  • Lighttpd з версії 1.4.59;
  • IIS підтримує HTTP/2 починаючи з Windows 10 та Windows Server 2016.

Важливо: хоча використання SSL/TLS не позначено як обов’язкова умова для роботи HTTP/2, фактично більшість реалізацій протоколу потребують TLS для його використання. Це означає, що для використання HTTP/2 Вам необхідно мати діючий SSL-сертифікат, підключений до Вашого сайту.

Безпосередньо активувати HTTP/2 для Вашої послуги можна за окремою інструкцією.