Перейти к содержимому
Skip to content
← Все статьи

HTTP/2 и HTTP/3: чем отличаются и что быстрее

Протокол HTTP — основа современного веба. Эволюция от HTTP/1.1 к HTTP/2 и HTTP/3 принесла значительные улучшения производительности. Понимание различий между этими версиями помогает правильно настроить сервер и ускорить загрузку сайта.

Краткая история HTTP

ВерсияГодТранспортКлючевое нововведение
HTTP/1.01996TCPБазовый протокол
HTTP/1.11997TCPKeep-alive, chunked transfer, Host header
HTTP/22015TCP + TLSМультиплексирование, сжатие заголовков, server push
HTTP/32022QUIC (UDP)Устранение HOL blocking на транспортном уровне

HTTP/1.1 — проблемы

HTTP/1.1 — простой и понятный, но у него есть серьёзные ограничения производительности:

HTTP/2 — мультиплексирование

HTTP/2 решает проблемы HTTP/1.1 с помощью бинарного фрейминга:

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

Несколько запросов и ответов передаются одновременно через одно TCP-соединение. Каждый запрос — это отдельный «поток» (stream), и потоки не блокируют друг друга на уровне HTTP.

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

HTTP/2 использует алгоритм HPACK для сжатия заголовков. Повторяющиеся заголовки (Host, User-Agent, Accept) кодируются индексами, что сокращает размер на 85–90%.

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

Клиент может указать приоритет каждого запроса. CSS и JS могут загружаться с высоким приоритетом, а изображения — с низким.

Server Push

Сервер может отправить ресурсы до того, как клиент их запросит. Например, вместе с HTML сразу отправить CSS. На практике Server Push используется редко из-за сложности настройки и кэширования.

Проблема HTTP/2: Head-of-Line Blocking

Хотя HTTP/2 мультиплексирует потоки на уровне HTTP, все они передаются через одно TCP-соединение. Если теряется один TCP-пакет, все потоки блокируются до его повторной передачи. Это называется TCP Head-of-Line Blocking.

HTTP/3 — QUIC вместо TCP

HTTP/3 решает проблему HOL blocking, заменив TCP на QUIC — новый транспортный протокол на базе UDP.

QUIC: главные преимущества

Сравнение производительности

ПараметрHTTP/1.1HTTP/2HTTP/3
Установление соединения1 RTT (TCP) + 2 RTT (TLS)1 RTT (TCP) + 1 RTT (TLS 1.3)1 RTT (QUIC+TLS) / 0-RTT
Параллельные запросы6–8 соединенийНеограниченно (1 соединение)Неограниченно (1 соединение)
HOL blockingНа уровне HTTPНа уровне TCPОтсутствует
Сжатие заголовковНетHPACKQPACK
Потеря пакетовБлокирует всёБлокирует всёБлокирует только один поток

Когда HTTP/3 заметно быстрее

Как проверить протокол сайта

Проверить, какой протокол HTTP использует сайт, можно несколькими способами:

В браузере

Откройте DevTools (F12) → Network → правой кнопкой по заголовку столбцов → включите «Protocol». Вы увидите h2 (HTTP/2) или h3 (HTTP/3) для каждого ресурса.

Через curl

# HTTP/2
curl -I --http2 https://example.com

# HTTP/3 (требует curl с поддержкой QUIC)
curl -I --http3 https://example.com

Онлайн-инструменты

Инструмент проверки проверку HTTP-заголовков на Enterno.io показывает версию протокола в ответе сервера.

Настройка на сервере

nginx (HTTP/2)

server {
    listen 443 ssl;
    http2 on;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
}

nginx (HTTP/3)

server {
    listen 443 ssl;
    http2 on;
    listen 443 quic reuseport;
    http3 on;
    add_header Alt-Svc 'h3=":443"; ma=86400';
}

Рекомендации

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: HTTP
HTTP
Полный жизненный цикл HTTP-запроса: от URL до отрендеренной страницы
16.03.2026 · 21 просм.
HTTP
HTTP кэширование: Cache-Control, ETag, Expires
14.03.2026 · 11 просм.
HTTP
HTTP заголовки: полное руководство
10.03.2025 · 46 просм.
HTTP
HTTP/2 vs HTTP/3: что нового и зачем переходить
14.03.2026 · 14 просм.