HTTP/2

Протоколы и стандарты
Версия HTTP с мультиплексированием, сжатием заголовков и более эффективной передачей ресурсов.
← Вернуться к глоссарию

Что такое HTTP/2?

HTTP/2 — крупное обновление протокола HTTP (стандартизованное в RFC 7540), добавившее бинарное кадрирование, мультиплексирование, сжатие заголовков и server push для заметного повышения производительности по сравнению с HTTP/1.1.

HTTP/2 и HTTP/1.1

ВозможностьHTTP/1.1HTTP/2
ФорматТекстовыйБинарный
СоединенияНесколько (6–8 на узел)Одно мультиплексированное
Обработка запросовПоследовательнаяПараллельные потоки
Сжатие заголовковНетСжатие HPACK
Server pushНедоступенПоддерживается
ПриоритизацияНетПриоритеты потоков

Как работает HTTP/2

HTTP/1.1 (Head-of-Line Blocking):

Connection 1: Request A ──────────► Response A

Connection 2: Request B ──────────► Response B

Connection 3: Request C ──────────► Response C

(Multiple connections, sequential per connection)

HTTP/2 (Multiplexing):

Single Connection:

├── Stream 1: Request A ──► Response A

├── Stream 2: Request B ──► Response B

├── Stream 3: Request C ──► Response C

└── All interleaved on same connection

Ключевые возможности

Бинарный уровень кадрирования

HTTP/2 Frame Structure:

┌─────────────────────────────────────┐

│ Length (24 bits) │

├─────────────────────────────────────┤

│ Type (8 bits) │ Flags (8 bits) │

├─────────────────────────────────────┤

│ Stream Identifier (32 bits) │

├─────────────────────────────────────┤

│ Frame Payload (variable) │

└─────────────────────────────────────┘

Сжатие заголовков HPACK

СценарийЗаголовки HTTP/1.1Заголовки HTTP/2
Первый запрос~800 байт~800 байт
Последующие запросы~800 байт каждый~20–50 байт (по индексу)

Приоритизация потоков

Priority Tree:

Root (connection)

├── CSS (weight: 256, high priority)

├── JavaScript (weight: 220)

└── Images (weight: 110, lower priority)

Требования к серверу

СерверПоддержка HTTP/2
nginx1.9.5+ (поддержка HTTP/2)
Apache2.4.17+ (модуль HTTP/2)
Node.js8.4+ (встроенная поддержка)
IISWindows 10/Server 2016+ (поддержка HTTP/2)

Преимущества производительности

Лучшие практики

1. Включите TLS: HTTP/2 практически требует HTTPS (браузеры это обеспечивают)

2. Уменьшите фрагментацию по доменам: несколько доменов теперь ухудшают производительность

3. Прекратите объединять файлы без необходимости: мультиплексирование снижает пользу такой сборки

4. Используйте server push осторожно: отправляйте только критические ресурсы

5. Контролируйте производительность: проверяйте эффект HTTP/2 в своём сценарии

HTTP/2 заметно повышает производительность большинства сайтов за счёт более эффективного использования сетевых соединений.

Применяйте эти знания на практике

Используйте API DomScan для проверки доступности доменов, их состояния и многого другого.