HTTP/2 — обновление протокола HTTP, стандартизированное в RFC 7540 (май 2015). Разработано на базе SPDY-протокола Google. Основная цель: снизить задержку за счёт мультиплексирования нескольких запросов в одном TCP-соединении, устраняя проблему head-of-line blocking HTTP/1.1.
Ключевые отличия от HTTP/1.1
- Мультиплексирование — несколько запросов и ответов в одном соединении одновременно. HTTP/1.1 допускал только 1 запрос за раз, браузеры открывали 6–8 соединений параллельно.
- Бинарный фрейминг — сообщения разбиваются на бинарные фреймы, а не текстовые блоки. Быстрее парсинг.
- HPACK-сжатие заголовков — заголовки кешируются и передаются в сжатом виде. HTTP/1.1 передаёт заголовки текстом при каждом запросе.
- Server Push — сервер превентивно отправляет ресурсы (CSS, JS), которые браузер запросит вслед. На практике применяется редко.
- Приоритизация потоков — клиент указывает приоритет запросов.
Требования
На практике HTTP/2 работает только поверх TLS (HTTPS). Технически RFC 7540 позволяет H2 без шифрования (h2c), но ни один браузер это не реализовал. Nginx поддерживает HTTP/2 с версии 1.9.5 (2015). В конфигурации: listen 443 ssl http2;.
История
SPDY создан Google в 2009 году как эксперимент. RFC 7540 (HTTP/2) опубликован в мае 2015 года. К 2019 году HTTP/2 использовался на 40% сайтов. В 2022 году QUIC-based HTTP/3 стандартизирован в RFC 9114. В 2024 году HTTP/2 используется на 60%+ веб-серверов, HTTP/3 — на 30%+ (Cloudflare CDN).
Связь с хостингом
HTTP/2 включается одной директивой в Nginx или Apache (mod_http2). Требует HTTPS — дополнительный аргумент для установки SSL-сертификата. Даёт ощутимый выигрыш для страниц с десятками JS/CSS/шрифтовых файлов. Для API с небольшим числом запросов разница минимальна. HTTP/2 не совместим с HAProxy в режиме h2c (cleartext).
Технические преимущества HTTP/2
HTTP/2 (RFC 7540, 2015) решает ключевые проблемы HTTP/1.1: Head-of-Line blocking (HOL) -- с мультиплексингом несколько ресурсов передаются параллельно в одном TCP-соединении, устраняя задержки ожидания. Server Push позволяет серверу отправить CSS/JS до того, как браузер их запросит. Бинарный формат вместо текстового снижает парсинг-оверхед. Сжатие заголовков (HPACK) уменьшает объём служебного трафика на 30--40% (особенно важно для API с повторяющимися заголовками). На практике HTTP/2 снижает время загрузки страниц на 10--50% в зависимости от количества ресурсов.
HTTP/2 в хостинге
Включение HTTP/2 в Nginx: listen 443 ssl http2. Apache 2.4.17+ поддерживает HTTP/2 через mod_http2. Для HTTP/2 обязателен SSL-сертификат (все браузеры требуют HTTPS для HTTP/2). HTTP/3 (QUIC) -- следующее поколение, работает поверх UDP. Для мобильных пользователей HTTP/3 особенно полезен: UDP устойчивее к потерям пакетов при смене сети. CDN обычно автоматически включают HTTP/2 и HTTP/3 для всех сайтов. Большинство современных хостингов поддерживают HTTP/2 по умолчанию.
История HTTP/2
HTTP/2 основан на протоколе SPDY, разработанном Google в 2009 году. IETF принял HTTP/2 как RFC 7540 в мае 2015 года. К 2024 году HTTP/2 поддерживается ~65% сайтов (W3Techs). Google разработал QUIC в 2012--2013 годах, IETF стандартизировал как HTTP/3 (RFC 9114, 2022). HTTP/1.1 (RFC 2616) работает с 1999 года -- это один из долгоживущих сетевых стандартов.