Загрузка...
Загрузка...
Сравнение HTTP/2 и HTTP/3: мультиплексирование, QUIC, настройка серверов. Практическое руководство по ускорению сайта с современными протоколами.
Полное руководство по настройке Brotli сжатия на веб-серверах: Nginx, Apache, сравнение с Gzip, уровни сжатия и проверка работы.
БезопасностьЧто такое хеш-функции, как работают MD5, SHA-1, SHA-256, SHA-512. Примеры использования, сравнение алгоритмов и онлайн-генератор хешей.
БезопасностьПроверка надёжности пароля онлайн. Критерии сложности, время взлома, брутфорс. Как создать надёжный пароль. Бесплатный инструмент проверки.
БезопасностьНастройка HTTP-кэширования: Cache-Control, ETag, Last-Modified, stale-while-revalidate. Стратегии для статики, HTML и API. Примеры для Nginx и Node.js.
Поделитесь с коллегами или изучите другие материалы блога
Переход с HTTP/1.1 на HTTP/2 и HTTP/3 даёт заметный прирост производительности за счёт мультиплексирования, сжатия заголовков и уменьшения задержек. В статье разберём отличия протоколов и настройку для ускорения сайта.
Проверить поддержку HTTP/2 и метрик производительности можно через HTTP/2 Checker и Web Vitals на rechecker.ru.
| Версия | Год | Ключевые особенности |
|---|---|---|
| HTTP/1.0 | 1996 | Один запрос на соединение |
| HTTP/1.1 | 1997 | Keep-alive, pipelining (ограниченный) |
| HTTP/2 | 2015 | Мультиплексирование, бинарный протокол |
| HTTP/3 | 2022 | QUIC, UDP, нулевой RTT |
Одно TCP-соединение обслуживает множество параллельных потоков. В HTTP/1.1 браузер ограничен 6 соединениями на домен — HTTP/2 снимает это ограничение.
HTTP/1.1: [Req1]----[Req2]----[Req3]---- (очередь)
HTTP/2: [Req1][Req2][Req3][Req4]... (параллельно)
Заголовки передаются в сжатом виде. Повторяющиеся поля (Host, User-Agent) кодируются по индексу.
Сервер может отправить ресурсы до запроса клиента. Например, CSS и JS вместе с HTML.
Данные передаются бинарными фреймами вместо текста. Меньше парсинга, меньше ошибок.
HTTP/3 работает поверх QUIC (Quick UDP Internet Connections) — протокола на базе UDP. Ключевые преимущества:
| Сценарий | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| Первое подключение | 2 RTT (TCP + TLS) | 2 RTT | 1 RTT (QUIC) |
| Повторное подключение | 2 RTT | 2 RTT | 0 RTT |
| Head-of-line blocking | Да | На уровне TCP | Нет |
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# Рекомендуемые настройки
http2_max_concurrent_streams 128;
http2_max_field_size 4k;
http2_max_header_size 16k;
}
Требуется Nginx 1.25+ с модулем --with-http_v3_module:
server {
listen 443 quic reuseport;
listen 443 ssl http2;
server_name example.com;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
add_header Alt-Svc 'h3=":443"; ma=86400';
}
<VirtualHost *:443>
ServerName example.com
Protocols h2 http/1.1
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
</VirtualHost>
DevTools → Network → Protocol: смотрите колонку "Protocol" (h2, h3, http/1.1).
curl -sI --http2 https://example.com
curl -sI --http3 https://example.com # curl 7.66+
HTTP/2 Checker на rechecker.ru проверяет поддержку HTTP/2 и Brotli для любого домена. Web Vitals оценивает LCP, FID и CLS — метрики, на которые влияет выбор протокола.
Переход на HTTP/2 и HTTP/3 улучшает метрики производительности:
| Метрика | Влияние протокола |
|---|---|
| LCP (Largest Contentful Paint) | Снижение за счёт параллельной загрузки |
| FID (First Input Delay) | Косвенное — меньше блокирующих запросов |
| CLS (Cumulative Layout Shift) | Нет прямого влияния |
| TTFB (Time to First Byte) | HTTP/3: 0-RTT для повторных подключений |
Web Vitals на rechecker.ru измеряет LCP, FID и CLS для любой страницы — используйте для оценки эффекта от смены протокола.
| Сервис | HTTP/2 | HTTP/3 |
|---|---|---|
| Cloudflare | Да | Да |
| AWS CloudFront | Да | Да |
| Fastly | Да | Да |
| Nginx | Да | Да (1.25+) |
| HAProxy | Да | Экспериментально |
Корпоративные прокси и файрволы могут блокировать QUIC (UDP 443). В таких случаях соединение откатывается на HTTP/2.
Для объявления поддержки HTTP/3 сервер отправляет:
Alt-Svc: h3=":443"; ma=86400
Браузер запоминает эту информацию и при следующем визите может сразу установить QUIC-соединение. Параметр ma — время жизни в секундах.
После внедрения HTTP/2 или HTTP/3 отслеживайте:
При проблемах с HTTP/3 проверьте, что UDP 443 не блокируется. Некоторые корпоративные сети разрешают только TCP.
Браузер выбирает протокол в порядке предпочтения: HTTP/3 (QUIC) > HTTP/2 (TLS) > HTTP/1.1. Если QUIC недоступен, используется HTTP/2. Fallback на HTTP/1.1 происходит для очень старых клиентов или при отключении HTTP/2 на сервере.
Проверка поддержки протоколов — первый шаг перед настройкой. Используйте HTTP/2 Checker для диагностики текущего состояния сайта. Метрики Web Vitals покажут влияние протокола на LCP, FID и CLS.
HTTP/2 — обязательный минимум для современных сайтов. HTTP/3 — следующий шаг, особенно ценен для мобильного трафика и нестабильных сетей. Оба протокола обратно совместимы: браузер автоматически выберет лучший доступный вариант.
Настройка занимает несколько минут для Nginx или Apache. После включения протокола перезапустите сервер и проверьте результат через HTTP/2 Checker. Регулярный мониторинг Web Vitals поможет оценить влияние на пользовательский опыт. Сравните метрики до и после перехода на новый протокол. Ожидаемое улучшение TTFB при переходе на HTTP/3 — 10–30% для повторных посещений за счёт 0-RTT. Мобильные пользователи получают наибольший выигрыш из-за частых переключений сети. Head-of-line blocking на уровне TCP полностью устранён в QUIC. Потеря одного пакета не блокирует остальные потоки.
HTTP/2 уже стандарт для современных сайтов. HTTP/3 даёт дополнительный выигрыш при высокой задержке и потере пакетов. Проверьте текущее состояние через HTTP/2 Checker и Web Vitals.