8.1.1 Протокол HTTP/2 та його підтримка
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/2 отримуємо: DOMContentLoaded
: 580 ms, Load
: 1.27 s та Finish
: 2.08 s.
Заміри були виконані на найпростішому прикладі з можливих. В реальності, переваги використання 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 для Вашої послуги можна за окремою інструкцією.