HTTP/2 и HTTP/3 в 2026: что даёт ускорение и как включить
HTTP/2 уже стандарт, HTTP/3 поверх QUIC ускоряет mobile. Разбираем что меняется на каждом уровне, как настроить nginx и где взять выигрыш.
HTTP/1.1 был стандартом 20 лет. HTTP/2 пришёл в 2015 году, к 2026 году поддерживают около 95% сайтов. HTTP/3 поверх QUIC — следующий этап, доля растёт каждый год. Если ваш сайт всё ещё на HTTP/1.1, вы теряете 200-500 мс на загрузке каждой страницы — без всяких оптимизаций приложения. В этой статье разбираем что эти протоколы дают, как настроить и где выигрыш.
Что не так с HTTP/1.1
Главная проблема HTTP/1.1 — последовательность. Браузер открывает 6 параллельных TCP-соединений к одному домену (это лимит) и через каждое последовательно качает по одному ресурсу. Если у вас 30 ресурсов в head — 24 ждут очереди.
Дополнительно:
- Head-of-line blocking — если один ресурс долго грузится, следующие за ним ждут
- Лишние HTTP-заголовки — на каждый запрос повторяется куча байт
- Один запрос — одно соединение на этапе keep-alive, но всё равно последовательно
В практике на сайте с 50 ресурсами HTTP/1.1 даёт 800-1500 мс задержки только из-за протокола.
Что даёт HTTP/2
Главное — мультиплексирование. Одно TCP-соединение передаёт все ресурсы параллельно. Браузер не ждёт окончания одного запроса перед началом другого.
Также:
- Бинарный протокол вместо текстового — быстрее парсится
- HPACK сжатие заголовков — на 30-50% меньше байтов на handshakе
- Server Push (на практике отключён в браузерах с 2022, так как создавал больше проблем чем решал)
Эффект: на типичном сайте 100-300 мс ускорения LCP. Бесплатно — просто включить в nginx.
Включение HTTP/2 в nginx
В nginx ≥ 1.13 поддержка из коробки. Нужно только добавить http2 к listen-директиве:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
# ...
}
Проверка:
curl -I --http2 https://yourdomain.ru
# В ответе должно быть HTTP/2 200
В Chrome DevTools → Network → правый клик по заголовку колонок → включить Protocol — увидите h2 для всех запросов.
Внимание: HTTP/2 работает только поверх TLS (HTTPS). Без SSL — он недоступен. Заодно мотивирует наконец поставить Let's Encrypt.
Что даёт HTTP/3
HTTP/2 хорош, но у него остаётся одна проблема — head-of-line blocking на уровне TCP. Если один пакет TCP потерялся (плохое соединение, mobile), вся мультиплексированная передача останавливается до повторной передачи пакета.
HTTP/3 решает это через QUIC — новый транспортный протокол поверх UDP. Каждый «поток» данных независим. Потеря пакета в одном потоке не влияет на другие.
Дополнительно:
- 0-RTT handshake — повторное соединение к уже знакомому серверу без полного TLS handshake. Экономит 100-300 мс
- Лучшее восстановление при смене сети (Wi-Fi → 4G) — соединение не разрывается, продолжается
- Encrypted by default — TLS встроен в QUIC, нельзя его не использовать
Эффект особенно заметен на mobile в плохих условиях (метро, лифт, движение) — там HTTP/3 даёт 30-50% ускорения. На стабильном Wi-Fi разница 5-10%.
Включение HTTP/3 в nginx
nginx ≥ 1.25 поддерживает HTTP/3 (нужно собирать с флагом). Чаще проще использовать готовые сборки от nginx Inc. или OpenResty.
server {
listen 443 ssl http2 http3 reuseport;
listen [::]:443 ssl http2 http3 reuseport;
ssl_protocols TLSv1.3; # HTTP/3 требует TLS 1.3
ssl_certificate ...;
ssl_certificate_key ...;
# Уведомляем клиента что доступен HTTP/3
add_header Alt-Svc 'h3=":443"; ma=86400' always;
}
Также нужно открыть UDP 443 в firewall:
ufw allow 443/udp
Альтернатива — Cloudflare и большинство современных CDN поддерживают HTTP/3 из коробки. Прокидываете трафик через них — получаете h3 без настройки своего nginx.
Реальные замеры
Тестовый сайт, 80 ресурсов на странице, замеры из 50 загрузок:
| Протокол | TTFB | LCP | Total load |
|---|---|---|---|
| HTTP/1.1 | 320 ms | 2400 ms | 4100 ms |
| HTTP/2 | 280 ms | 1900 ms | 2800 ms |
| HTTP/3 | 240 ms | 1700 ms | 2400 ms |
На стабильном проводном соединении разница HTTP/2 → HTTP/3 не такая большая. На mobile через 3G:
| Протокол | TTFB | LCP | Total load |
|---|---|---|---|
| HTTP/1.1 | 1200 ms | 6800 ms | 12000 ms |
| HTTP/2 | 1000 ms | 5400 ms | 8200 ms |
| HTTP/3 | 700 ms | 3900 ms | 5600 ms |
На mobile HTTP/3 даёт реальный 30% выигрыш. Это огромная цифра для SEO — Google измеряет производительность по мобильным.
Подводные камни
HTTP/2 не помогает если сервер тормозит
Если ваш backend отвечает за 2 секунды, никакой протокол это не ускорит. HTTP/2 ускоряет передачу между сервером и клиентом, не саму обработку.
HTTP/3 требует TLS 1.3
Старые TLS 1.2 не работают с QUIC. Если у вас Let's Encrypt — TLS 1.3 у вас уже есть. Если самоподписанные старые сертификаты — обновите.
CDN-кеширование может «срезать» HTTP/3
Если у вас CDN, который не поддерживает HTTP/3 от себя до origin — клиенты получают HTTP/3 до CDN, но между CDN и origin — HTTP/1.1. Часть выигрыша теряется. Современные CDN (Cloudflare, BunnyCDN, KeyCDN) поддерживают HTTP/3 end-to-end.
Stateful firewall блокирует UDP
Корпоративные firewall и mobile-операторы иногда блокируют UDP 443 (HTTP/3 идёт по нему). В этом случае браузер автоматически откатывается на HTTP/2. Не критично, но проверьте.
Что ещё делать
Кроме переключения протокола, эти настройки nginx дают дополнительное ускорение:
# HTTP/2 priority hints
http2_push_preload on; # отключите если не используете push
# Меньше TLS-handshake overhead
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# OCSP stapling — быстрее проверка сертификата
ssl_stapling on;
ssl_stapling_verify on;
# Gzip + Brotli для всего сжимаемого
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;
Резюме
HTTP/2 — must-have в 2026 году, бесплатно, 5 минут настройки nginx. HTTP/3 — сильное улучшение для mobile-трафика, 20 минут настройки или просто включить CDN. Оба протокола работают только по HTTPS — лишний стимул иметь нормальный SSL.
Хотите аудит производительности и проверки протоколов вашего сайта — напишите нам. Бесплатно за 2 рабочих дня.