Главная Статьи Оптимизация

HTTP/2 и HTTP/3

HTTP — это язык, на котором браузер и сервер договариваются о передаче страниц. У него есть версии, и от версии зависит, насколько шустро грузится сайт. Старый HTTP/1.1 был придуман, когда страницы состояли из пары файлов; современные сайты тянут десятки ресурсов сразу, и тут новые версии — HTTP/2 и HTTP/3 — дают ощутимый прирост. Разберём, в чём разница и как перейти.

Чем плох старый HTTP/1.1

В HTTP/1.1 по одному соединению файлы запрашиваются практически по очереди: пока не пришёл один, следующий ждёт. А современная страница — это десятки файлов: стили, скрипты, шрифты, картинки. Получается очередь, в которой ресурсы толкаются за место. Браузеры обходили это, открывая несколько соединений сразу, но это костыль, который тоже упирается в лимиты. Отсюда и тормоза на сайтах с большим числом ресурсов.

Очередь против параллельной загрузки HTTP/1.1 — файлы по очереди финиш HTTP/2 — файлы параллельно финиш
По одному соединению HTTP/2 отдаёт файлы разом — и страница готова намного раньше.

Три версии коротко

HTTP/1.1
Файлы по очереди, по одному на соединение. Устаревший подход, но всё ещё встречается.
HTTP/2
Много файлов по одному соединению одновременно (мультиплексирование), сжатие заголовков. Заметно быстрее.
HTTP/3
То же, но поверх протокола QUIC. Лучше держит нестабильную сеть и мобильный интернет.

Что даёт HTTP/2

Главное нововведение — мультиплексирование: по одному соединению одновременно идёт сразу много файлов, без очереди. Плюс сжимаются служебные заголовки запросов, которых на странице бывают сотни. На практике сайт с множеством мелких ресурсов на HTTP/2 грузится заметно быстрее, чем на HTTP/1.1, — и без всяких переделок самого сайта.

Что добавляет HTTP/3

HTTP/3 работает поверх нового транспорта — QUIC (на базе UDP вместо TCP). Это убирает проблему, когда из-за одного потерянного пакета «застревали» все остальные. Выигрыш особенно чувствуется на мобильном и нестабильном интернете, а также ускоряет установку соединения. Для пользователя это ещё более быстрая и плавная загрузка, особенно в дороге и в местах со слабым сигналом.

⚠️ И HTTP/2, и HTTP/3 работают только по HTTPS. Так что сначала нужен SSL-сертификат — если вы ещё на http, начните с него: статья SSL и HTTPS: зачем сайту.

Как включить и проверить

Хорошая новость — сайт переделывать не нужно, это уровень сервера. HTTP/2 сегодня поддерживают почти все хостинги и серверы; часто он уже включён, иначе включается в настройках или через поддержку. HTTP/3 пока новее, но его легко получить через CDN — многие сети раздают контент по HTTP/3 из коробки. Проверить версию просто:

Инструменты разработчика → вкладка «Сеть» →
колонка «Протокол»: h2 (HTTP/2) или h3 (HTTP/3)

Если видите http/1.1 — есть что улучшить. Версию протокола также показывают онлайн-сервисы проверки сайта.

Версия протокола — часть скорости наряду с сжатием gzip/Brotli, временем ответа сервера и Core Web Vitals. По отдельности каждый приём даёт немного, вместе — ощутимо быстрый сайт.

Что устарело вместе с HTTP/1.1

Любопытный побочный эффект: приёмы, которыми годами ускоряли сайты под HTTP/1.1, на HTTP/2 стали не нужны, а порой и вредны. Раньше боролись с очередью, объединяя файлы: десять иконок склеивали в один спрайт, все стили — в один CSS, а ресурсы раскидывали по нескольким доменам (домен-шардинг), чтобы открыть больше параллельных соединений. На HTTP/2 эти костыли теряют смысл — он и так отдаёт много файлов сразу по одному соединению. Более того, склейка мешает кэшированию (поменяли один файл — перекачивается вся склейка), а домен-шардинг на HTTP/2 даже замедляет, плодя лишние соединения. Если делаете сайт под современный протокол, эти старые оптимизации можно убирать.

HTTP/2 Server Push: почему от него отказались

В HTTP/2 была фишка под названием Server Push: сервер мог «протолкнуть» браузеру файлы заранее, не дожидаясь запроса, — например, сразу выслать CSS вместе с HTML. Звучало многообещающе, но на практике приём оказался капризным: сервер часто слал то, что у браузера уже было в кэше, тратя трафик впустую. В итоге от Server Push отказались и в новых версиях его убрали. Задачу «загрузить важное пораньше» сегодня решают аккуратнее — через подсказки в HTML вроде preload и preconnect, которые говорят браузеру, что подгрузить заранее, не навязывая лишнего.

Какого прироста ждать

Будем честны: переход на HTTP/2 — это не волшебная кнопка «сделать быстро». Выигрыш зависит от того, сколько ресурсов на странице. Если их десятки — мелких иконок, скриптов, шрифтов, — прирост заметный, потому что именно очередь HTTP/1.1 была узким местом. Если страница и так лёгкая, из пары файлов, разница будет небольшой. И HTTP/2 не отменяет других правил: тяжёлые несжатые картинки останутся тяжёлыми на любом протоколе. Поэтому версия протокола — одно из слагаемых скорости, которое включается «бесплатно» на стороне сервера, но работает в связке со сжатием, кэшем и оптимизацией картинок, а не вместо них.

Коротко

HTTP/2 и HTTP/3 — новые версии протокола передачи страниц, которые ускоряют загрузку без переделки сайта. HTTP/2 за счёт мультиплексирования отдаёт много файлов по одному соединению сразу, а HTTP/3 поверх QUIC лучше держит мобильный и нестабильный интернет. Обе версии требуют HTTPS. HTTP/2 обычно уже доступен на хостинге, HTTP/3 проще всего получить через CDN. Проверить версию можно в инструментах разработчика — ищите h2 или h3 вместо http/1.1.

Частые вопросы

Чем HTTP/2 отличается от HTTP/1.1?
В HTTP/1.1 файлы по одному соединению передаются практически по очереди, из-за чего сайты с большим числом ресурсов тормозят. HTTP/2 умеет мультиплексирование — передаёт много файлов по одному соединению одновременно — и сжимает служебные заголовки. В итоге современная страница на HTTP/2 грузится заметно быстрее без переделки самого сайта.
Что такое HTTP/3 и QUIC?
HTTP/3 — самая новая версия протокола, работающая поверх транспорта QUIC (на базе UDP вместо TCP). Это убирает ситуацию, когда из-за одного потерянного пакета застревали все остальные, и ускоряет установку соединения. Выигрыш особенно заметен на мобильном и нестабильном интернете.
Нужен ли HTTPS для HTTP/2 и HTTP/3?
Да, обе версии на практике работают только по HTTPS. Поэтому сначала нужен SSL-сертификат. Если сайт ещё на http, начните с перехода на https — это и предусловие для новых протоколов, и сам по себе важный шаг для безопасности и доверия.
Как включить HTTP/2 или HTTP/3?
Сайт переделывать не нужно — это уровень сервера. HTTP/2 поддерживают почти все современные хостинги, часто он уже включён или включается в настройках. HTTP/3 пока новее, и проще всего получить его через CDN, многие сети раздают контент по HTTP/3 автоматически.
Как узнать, какая версия протокола у моего сайта?
Откройте инструменты разработчика в браузере на вкладке «Сеть» и посмотрите колонку «Протокол»: h2 означает HTTP/2, h3 — HTTP/3, http/1.1 — старую версию. Версию протокола также показывают онлайн-сервисы проверки скорости и состояния сайта.
Нужно ли объединять файлы и делать спрайты на HTTP/2?
Нет, на HTTP/2 эти приёмы из эпохи HTTP/1.1 не нужны, а порой и вредны. Он сам отдаёт много файлов параллельно по одному соединению. Склейка мешает кэшированию (поменяли один файл — перекачивается всё), а домен-шардинг даже замедляет, плодя лишние соединения. Старые оптимизации под современный протокол можно убирать.
Насколько HTTP/2 ускоряет сайт?
Зависит от числа ресурсов. Если на странице десятки мелких файлов (иконки, скрипты, шрифты), прирост заметный — очередь HTTP/1.1 была узким местом. Если страница и так лёгкая, разница небольшая. HTTP/2 не отменяет других правил: тяжёлые несжатые картинки останутся тяжёлыми, поэтому он работает в связке со сжатием и оптимизацией, а не вместо них.