Прискорте сайт з HTTP/3

6 червня 2022 року IETF було анонсовано публікацію цілого ряду стандартів Інтернету, які раціоналізують та модернізують HTTP, серед основного – публікація нового протоколу передачі даних в Інтернеті HTTP/3

Дотримуючись світових тенденцій та стандартів, ми також запроваджуємо підтримку протоколу HTTP/3 для своїх клієнтів. Новий протокол передачі даних вже доступний для сайтів на Turbo NVMe тарифах.

Що таке HTTP?

HTTP або Hypertext Transfer Protocol – універсальний протокол передачі гіпертексту. По суті, усі текстові дані на всіх сайтах в Інтернеті передаються через HTTP. 

У чому різниця між протоколами HTTP/1.1, HTTP/2 та HTTP/3?

HTTP/2 розроблявся для того, щоб максимально прискорити, передусім візуально, завантаження сайту. HTTP/3 еволюційно просунувся далі – він встановлює з’єднання ще хутчіше за рахунок протоколу QUIC, який здатен поєднувати транспортне і криптографічне “рукостискання” в одне.

У результаті економиться цілий цикл прийому-передачі → з’єднання встановлюється швидше → швидкість завантаження елементів сайту підвищується в рази.  

З’ясуймо, у чому принципова відмінність HTTP/3 від попередніх HTTP/1.1 та HTTP/2-версій?

HTTP/1.1 та HTTP/2 використовують з’єднання TCP (transmission control protocol), HTTP/3 ж працює за допомогою протоколу QUIC, який використовує UDP-з’єднання (user datagram protocol). Чим вони різняться? 

TCP вимагає підтвердження доставки – відгуку від клієнта, якому доставляється пакет даних. Для цього йому потрібне встановлене заздалегідь з’єднання.  

А от для роботи UDP таке попереднє з’єднання не потрібне, тому пакети даних доставляються набагато швидше. Це, по суті, визначальна фіча, яка так потрібна проектам, розрахованим на швидкий обмін та високу пропускну здатність. 

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

Тоді як в HTTP/1.1 для кожного елементу потрібне окреме з’єднання, HTTP/2 дозволяє завантажувати всі елементи сайту за допомогою всього-на-всього одного TCP-з’єднання між браузером та сервером. Ця фіча називається мультиплексуванням.

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

Заголовки

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

Для ще кращої оптимізації QUIC в HTTP/3 юзає короткі заголовки пакету і фрейми (мініатюрні спеціалізовані пакети), щоб передавати додаткову інфу, на відміну від TCP, який використовує один фіксований заголовок для відправлення всіх метаданих.

Server-push

Технологію server push дуже чекали з виходом HTTP/2. Її суть полягала в тому, що веб-сервер, не чекаючи запиту від браузера, одразу надсилав, крім самої сторінки, ще й додаткову, необхідну для її відображення інфу, наприклад, JavaScript і CSS-файли.

Минуло 5 років, і стало зрозуміло, що server push нестабільна в продакшені. Тому і в HTTP/3 функція ця не реалізована. 

Підвищена безпека для користувачів

В HTTP/1 та HTTP/2 (принципово працює лише для безпечних з’єднань) на рівні безпеки використовується протокол, який відповідає за шифрування даних – TLS (Transport Layer Security). Працює це наступним чином – коли на вашому сайті встановлено SSL-сертифікат, він працює через HTTPS: спочатку відкритий текст шифрується на рівні TLS і вже в зашифрованому вигляді передається транспортному протоколу TCP. 

В HTTP/3 вже відмовляються від визначення відкритого тексту і вбудовують TLS прямо в протокол QUIC – чіткі межі між протоколами стираються і виходить, що QUIC без TLS використовувати неможливо і QUIC (відповідно HTTP/3 також) завжди повністю зашифровані. Так і виходить, що у зловмисників, які мали на меті перехопити дані, практично не залишається жодних шансів.

Це вбудоване шифрування ще й пришвидшує протокол. У звичайному HTTPS тристороннє рукостискання TCP має бути завершене на транспортному рівні, і статися це має до того, як між клієнтом та сервером будуть надіслані реальні дані. 

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

Пріоритетність

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

Усе це дозволяє істотно економити мережеві ресурси та ресурси сервера, а також виключає затримки, необхідні для встановлення нових з’єднань. Сайти завантажуються значно швидше, що особливо помітно на смартфонах та планшетах. 

PS: Як перевірити, чи ввімкнено QUIC і HTTP/3?

Варіант 1. Ви можете перевірити свій сайт або будь-який інший сайт в Інтернеті за допомогою безкоштовного інструменту HTTP/3 Check від LiteSpeed. Потрібно просто ввести URL і програма покаже вам, чи підтримується HTTP/3 цим сайтом. Також відобразиться інформація про з’єднання.

Варіант 2. Встановлюємо розширення Chrome HTTP/2 and SPDY indicator. Значок синьої блискавки означатиме, що HTTP/2 ввімкнено. Значок зеленої блискавки відображатиметься при використанні HTTP/3. 

Висновок

Для ще більшого прискорення необхідно встановити плагін LiteSpeed Cache. З ним сайт завантажуватиметься ще швидше завдяки кешуванню на рівні веб-сервера.

Бажаєте, щоб сайт працював в рази швидше по протоколу HTTP/3? Для цього достатньо перейти на наші надшвидкі тарифи Turbo NVMe Хостингу. Усі сайти цих тарифів розміщуються на LiteSpeed веб-сервері з підтримкою HTTP/3.