ГлавнаяБлог
HTTP/2 и HTTP/3: ускорение сайта без переделки

HTTP/2 и HTTP/3: ускорение сайта без переделки

HTTP/2 и HTTP/3: ускорение сайта без переделки — иллюстрация к статье блога SEO Мастера
Автор: SEO Мастера · агентство продвижения с 2005 года Дата: 21 июля 2026 Время чтения: 23 мин

Есть категория работ по скорости, где не нужно трогать вёрстку, переписывать шаблоны, ужимать картинки и спорить с разработчиками о размере JS-бандла. Нужно поменять три строки в конфигурации веб-сервера — и страница начнёт грузиться заметно быстрее просто потому, что браузер и сервер перестанут разговаривать на протоколе 1997 года. HTTP/2 и HTTP/3 меняют не содержимое сайта, а способ его доставки: как устанавливается соединение, сколько запросов идёт параллельно, что происходит при потере пакета в мобильной сети. Эффект получают все страницы сразу, включая те, до которых у вас никогда не дойдут руки. В этой статье разбираем механику протоколов без академизма: что реально ускоряется, что нет, как проверить свою версию за минуту и что включать на практике в рамках технической части SEO-продвижения.

Коротко

  • HTTP/1.1 открывает до 6 параллельных соединений на домен и обрабатывает запросы в них строго по очереди — это и есть главный тормоз при большом количестве файлов.
  • HTTP/2 даёт мультиплексирование: десятки запросов летят в одном соединении одновременно, заголовки сжимаются HPACK, лишние рукопожатия TLS исчезают.
  • HTTP/3 переносит всё на QUIC поверх UDP: соединение поднимается за 1 RTT (а при повторном визите — за 0), потеря пакета тормозит только один поток, а не всю страницу.
  • Наибольший прирост получают сайты с множеством мелких ресурсов, мобильный трафик и посетители из регионов с высоким пингом; на «одностраничнике с тремя файлами» разница будет символической.
  • В Core Web Vitals протокол влияет прежде всего на TTFB и LCP; CLS и INP он практически не улучшает — там работает вёрстка и JavaScript.
  • Старые приёмы эпохи HTTP/1.1 — шардинг доменов, спрайты, инлайн base64 — на HTTP/2 и HTTP/3 вредят, а не помогают.
  • Проверяется всё за минуту: колонка Protocol в DevTools, ключ curl или заголовок Alt-Svc в ответе сервера.

Почему протокол вообще стал узким местом

HTTP/1.1 стандартизировали в 1997 году, когда типичная страница состояла из HTML и пары картинок. Сегодня средняя коммерческая страница подтягивает от 50 до 150 отдельных ресурсов: стили, шрифты, скрипты аналитики, чат-виджет, пиксели рекламных систем, изображения товаров, иконки. Протокол, рассчитанный на десяток запросов, обслуживает сотню — и делает это по правилам, которые ему заложили почти тридцать лет назад.

Ограничение первое и главное: внутри одного TCP-соединения HTTP/1.1 умеет обрабатывать только один запрос за раз. Отправил запрос — жди ответа целиком, потом отправляй следующий. Это называется head-of-line blocking на уровне HTTP: один медленный ответ блокирует очередь за собой. Браузеры обошли ограничение единственным доступным способом — открывают несколько соединений параллельно. Но и здесь потолок: практически все браузеры держат не более 6 одновременных соединений на один хост.

Посчитайте сами. Сто ресурсов, шесть параллельных каналов — это минимум семнадцать последовательных «волн» загрузки. Каждая волна упирается в задержку сети: при пинге 40 мс до сервера только на ожидание уходит около 700 мс, и это без учёта времени генерации ответа и передачи данных. На мобильном интернете с пингом 120–150 мс арифметика становится совсем печальной.

Ограничение второе: каждое новое TCP-соединение стоит денег во времени. Тройное рукопожатие TCP — один круг до сервера и обратно. TLS-рукопожатие на HTTPS — ещё один-два круга в зависимости от версии протокола. То есть перед тем как отдать первый байт полезных данных, браузер тратит 2–3 RTT. Умножьте на шесть соединений, откройте вторую пачку соединений к шрифтовому CDN и к домену аналитики — и вы получите ощутимый пролог перед стартом отрисовки.

Ограничение третье: заголовки передаются текстом и не сжимаются. Cookie на 1,5 КБ, User-Agent, Accept, Referer — всё это отправляется полностью с каждым из сотни запросов. На странице с сотней ресурсов только служебная переписка съедает сотни килобайт исходящего трафика, а исходящий канал у пользователя обычно уже входящего.

HTTP/1.1 не «медленный». Он просто спроектирован под другой веб. Мы двадцать лет обходили его ограничения костылями — спрайтами, конкатенацией, шардингом. HTTP/2 и HTTP/3 убирают саму причину, из-за которой эти костыли понадобились.

Что изменил HTTP/2

HTTP/2 (RFC 7540, 2015; актуальная редакция — RFC 9113) сохранил всю семантику HTTP: те же методы, те же коды ответа, те же заголовки, те же URL. Изменился транспортный уровень — то, как данные упаковываются и передаются по проводу. Именно поэтому переход не требует переделки сайта: приложение о смене протокола даже не знает.

Бинарный фрейминг и мультиплексирование

Вместо текстовых сообщений HTTP/2 использует бинарные фреймы фиксированной структуры. Каждый фрейм помечен идентификатором потока (stream). Это позволяет разложить десятки запросов и ответов на фреймы, перемешать их и передать по одному-единственному TCP-соединению, а на другом конце собрать обратно. Очередь исчезает: браузер отправляет все запросы сразу, сервер отвечает по мере готовности, медленный ответ не блокирует быстрые.

Практическое следствие: шесть соединений больше не нужны, рукопожатие выполняется один раз, TCP-соединение успевает разогнать окно перегрузки (медленный старт проходится единожды, а не шесть раз параллельно). На типичном интернет-магазине это самый заметный эффект — картинки в листинге категории перестают грузиться порциями по шесть штук.

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

HTTP/2 сжимает заголовки алгоритмом HPACK со статической и динамической таблицами. Повторяющиеся заголовки (а они повторяются почти полностью от запроса к запросу) передаются ссылкой на индекс в таблице вместо полного текста. Экономия на странице с сотней ресурсов и жирными cookie достигает десятков и сотен килобайт исходящего трафика — а именно исходящий канал чаще всего узкий у мобильного пользователя.

Приоритеты потоков

Раз всё летит в одном соединении, нужен способ сказать «стили важнее, чем картинка в футере». В HTTP/2 изначально была громоздкая схема с деревом зависимостей, которую серверы реализовывали по-разному. На практике её заменил механизм Extensible Priorities (RFC 9218) с простым заголовком Priority и параметрами срочности. Для владельца сайта это означает: полагаться на автоматику сервера можно, но управлять приоритетом критичных ресурсов лучше явно — через preload для шрифта и LCP-картинки и атрибут fetchpriority="high" на главном изображении.

Server Push, который не взлетел

Обещанная киллер-фича HTTP/2 — сервер сам отправляет браузеру файлы, не дожидаясь запроса. На практике оказалось, что сервер не знает, что уже лежит в кэше браузера, и push регулярно тратил трафик впустую. Chrome отключил поддержку по умолчанию ещё в 2022 году, остальные последовали. Не тратьте время на настройку Server Push. Его функцию сегодня выполняет ранний ответ 103 Early Hints: сервер, пока готовит основной ответ, успевает сказать браузеру, какие ресурсы начинать грузить.

ВАЖНОЕ ОГРАНИЧЕНИЕ

Все браузеры поддерживают HTTP/2 только поверх TLS. Формально в стандарте есть версия без шифрования (h2c), но ни один массовый браузер её не использует. Практический вывод: без HTTPS никакого HTTP/2 и HTTP/3 не будет. Если сайт до сих пор на голом HTTP — сначала сертификат и корректный переезд, механика подробно разобрана в статье про HTTPS и SEO, и только потом разговор про версии протокола.

HTTP/3 и QUIC: зачем понадобилась третья версия

HTTP/2 убрал блокировку очереди на уровне HTTP, но оставил её на уровне TCP. TCP гарантирует доставку данных строго по порядку: если один пакет потерялся, все последующие пакеты ждут его повторной передачи — даже если они относятся к совершенно другому потоку. То есть на HTTP/2 потеря одного пакета с фрагментом картинки из футера тормозит доставку CSS, который уже физически пришёл на устройство. И чем больше потоков в одном соединении, тем больнее бьёт каждая потеря.

На стабильном проводном интернете это незаметно. На мобильной сети с потерями 1–3% HTTP/2 в отдельных сценариях работает хуже, чем HTTP/1.1 с шестью независимыми соединениями, — потому что там потеря била только по одному из шести каналов.

HTTP/3 (RFC 9114) решает это радикально: он работает не поверх TCP, а поверх QUIC (RFC 9000) — транспортного протокола на базе UDP, в который встроены и надёжная доставка, и шифрование. Ключевые следствия:

  • Независимые потоки. Потеря пакета тормозит только тот поток, к которому пакет относился. Остальные ресурсы продолжают доставляться.
  • Одно рукопожатие вместо двух. TLS 1.3 встроен в QUIC: установление шифрованного соединения занимает 1 RTT вместо привычных 2–3.
  • 0-RTT при повторном подключении. Браузер, который уже общался с сервером, может отправить первый запрос вместе с рукопожатием — данные уходят до того, как соединение формально установлено.
  • Миграция соединения. Соединение опознаётся не парой IP-адресов, а Connection ID. Пользователь вышел из зоны Wi-Fi в мобильную сеть — соединение не рвётся и не поднимается заново. Для сайтов с длинными сессиями и мобильным трафиком это ощутимо.
  • QPACK вместо HPACK. Сжатие заголовков переработано так, чтобы не создавать искусственных зависимостей между потоками.

Важный нюанс развёртывания: браузер не может знать заранее, что сайт умеет HTTP/3. Первое подключение идёт по HTTP/2, сервер в ответе присылает заголовок Alt-Svc: h3=":443"; ma=86400 — «я умею h3 на этом порту, запомни на сутки». Начиная со следующего запроса браузер пробует QUIC. Отсюда практический вывод: эффект HTTP/3 проявляется со второго визита, и это нормальное поведение, а не поломка настройки.

ПараметрHTTP/1.1HTTP/2HTTP/3
Транспорт TCP TCP QUIC поверх UDP
Формат Текстовый Бинарные фреймы Бинарные фреймы
Параллельность До 6 соединений, в каждом очередь по одному Одно соединение, десятки потоков одновременно Одно соединение, потоки полностью независимы
Блокировка очереди На уровне HTTP и TCP Устранена на уровне HTTP, осталась на TCP Устранена полностью
Сжатие заголовков Нет HPACK QPACK
Рукопожатие до первых данных 2–3 RTT (TCP + TLS) 2–3 RTT (TCP + TLS) 1 RTT, при повторном визите 0-RTT
Шифрование Опционально Формально опционально, фактически обязательно Встроено, TLS 1.3, отключить нельзя
Смена сети без разрыва Нет Нет Да, через Connection ID
Поддержка браузерами Полная Практически полная Все актуальные версии основных браузеров
Сложность внедрения Одна директива в конфиге Нужны свежий сервер и открытый UDP 443

Кому переход даст много, а кому почти ничего

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

Максимальный эффект

Много мелких ресурсов

Интернет-магазины с листингами на 40–60 изображений, сайты с иконочными наборами, порталы с десятками скриптов. Именно здесь очередь из шести соединений душит загрузку сильнее всего.

Максимальный эффект

Мобильный трафик и регионы

Чем выше RTT и чем больше потерь пакетов, тем дороже каждое лишнее рукопожатие и тем ценнее независимость потоков в QUIC. Разница между Москвой и Дальним Востоком тут принципиальна.

Заметный эффект

Тяжёлые cookie и авторизация

Личные кабинеты, корзины, CRM-виджеты: сжатие заголовков экономит исходящий трафик на каждом запросе, а он у пользователя обычно втрое уже входящего.

Слабый эффект

Лендинг из пяти файлов

Если ресурсов мало и они крупные, ограничение в шесть соединений не мешает. Прирост будет, но за счёт экономии на рукопожатиях, а не на мультиплексировании.

Нулевой эффект

Медленный бэкенд

Если сервер думает над HTML 1,5 секунды, протокол не поможет: он не ускоряет генерацию ответа. Сначала кэширование и база данных, потом транспорт.

Отрицательный эффект

Наследие HTTP/1.1

Шардинг по нескольким доменам на HTTP/2 работает против вас: каждый лишний домен — это отдельное соединение и отдельное рукопожатие вместо одного общего.

Ещё один трезвый ориентир: транспорт влияет на время доставки, а не на объём. Если у вас на главной лежит фоновая картинка на 3,2 МБ в формате PNG, то по HTTP/3 она приедет ровно такой же тяжёлой. Работа с весом ресурсов — отдельная задача, её механика разобрана в материале про оптимизацию изображений, а общий порядок работ по производительности — в статье о скорости загрузки сайта.

Как протокол связан с Core Web Vitals

Это тот вопрос, ради которого тему обычно и поднимают. Разберём по метрикам, без обещаний «зелёной зоны по щелчку».

TTFB — прямое влияние

Time to First Byte складывается из сетевой части (DNS, TCP, TLS) и серверной (генерация ответа). Протокол сокращает именно сетевую: HTTP/3 экономит один-два круга до сервера на рукопожатии, а при 0-RTT — фактически всё время установления соединения. При пинге 30 мс это десятки миллисекунд, при пинге 150 мс — уже 150–300 мс, что на мобильных заметно. TTFB формально не входит в тройку Core Web Vitals, но он является слагаемым LCP: пока не пришёл первый байт HTML, не начнётся ничего.

LCP — существенное влияние

Largest Contentful Paint — момент отрисовки самого крупного элемента, чаще всего главной картинки или заголовочного блока. Тут работают сразу три фактора: сокращение рукопожатия ускоряет старт, мультиплексирование позволяет запросить LCP-ресурс, не дожидаясь очереди, а приоритеты дают ему проехать вперёд остальных. На тяжёлых страницах с большим количеством ресурсов переход на HTTP/2 нередко сдвигает LCP на сотни миллисекунд — но только если сама картинка не весит четыре мегабайта и не грузится через три редиректа.

INP — влияние косвенное

Interaction to Next Paint измеряет отзывчивость на действия пользователя и определяется загрузкой основного потока браузера: сколько JavaScript парсится, компилируется и выполняется. Протокол доставляет скрипты быстрее, но выполняются они ровно столько же. Быстрая доставка тяжёлого бандла иногда даже ухудшает картину: браузер получает всё раньше и раньше уходит в блокирующее выполнение. Улучшение INP — это работа с кодом, а не с транспортом.

CLS — влияния практически нет

Cumulative Layout Shift зависит от того, зарезервировано ли место под изображения, баннеры и шрифты. Единственный косвенный плюс: при быстрой доставке шрифта короче окно, в котором виден подменённый шрифт. Всё остальное решается атрибутами width/height, font-display и резервированием контейнеров. Подробный разбор всех трёх метрик и порогов — в отдельном материале про Core Web Vitals.

ЧЕГО НЕ ЖДАТЬ

Переход на HTTP/2 или HTTP/3 сам по себе не выводит сайт в ТОП. Скорость — это фактор среди десятков других, и он работает как порог, а не как рычаг: очень медленный сайт теряет позиции и конверсию, а между «быстро» и «очень быстро» разница для ранжирования уже невелика. Зато выигрыш в реальном пользовательском опыте виден на поведенческих факторах: меньше отказов на первом экране, глубже просмотр, выше конверсия — и вот это уже влияет на выдачу заметно.

Как проверить, на каком протоколе работает ваш сайт

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

1

Колонка Protocol в DevTools

Откройте инструменты разработчика, вкладку Network, кликните правой кнопкой по шапке таблицы и включите колонку Protocol. Обновите страницу. Значения: http/1.1, h2, h3. Смотрите не только на главный документ, но и на статику: часто HTML идёт по h2, а картинки с отдельного домена — по http/1.1.

2

Проверка из консоли

Команда curl -I --http2 https://ваш-сайт.ру в первой строке ответа покажет HTTP/2 200, если протокол согласован. Для третьей версии — curl -I --http3 https://ваш-сайт.ру, но учтите: нужна сборка curl с поддержкой QUIC, иначе получите ошибку опции, а не отсутствие HTTP/3 на сервере.

3

Заголовок Alt-Svc

Самый надёжный признак включённого HTTP/3 — наличие в ответе заголовка вида alt-svc: h3=":443"; ma=86400. Если его нет, браузер никогда не попробует QUIC, сколько бы вы ни настраивали слушателя на сервере. Это ошибка номер один при внедрении h3.

4

Проверка ALPN

Команда openssl s_client -alpn h2 -connect ваш-сайт.ру:443 покажет строку с согласованным протоколом. ALPN — расширение TLS, по которому клиент и сервер договариваются о версии HTTP прямо в рукопожатии. Если ALPN не согласует h2, соединение молча откатится на HTTP/1.1 без всяких ошибок.

5

Логи сервера

Добавьте в log_format переменную $server_protocol — в логах появятся значения HTTP/1.1, HTTP/2.0, HTTP/3.0. Это даёт долю реального трафика по версиям, включая роботов. Как выжимать из логов максимум, разбирали в статье про анализ логов сервера.

6

Проверка с разных сетей

Обязательно проверьте с мобильного интернета и из корпоративной сети. Часть провайдеров и почти все строгие корпоративные файрволы режут UDP на 443 порту — там HTTP/3 не поднимется и клиент откатится на HTTP/2. Это нормальное поведение протокола, но знать о нём нужно.

Как включить: практическая сторона

Дальше — конкретика по типовым конфигурациям. Формулировки директив зависят от версии ПО, поэтому первым делом смотрите, что у вас установлено: nginx -v, apache2 -v, панель хостинга.

ПлатформаHTTP/2HTTP/3Что учесть
Nginx Директива http2 on; в блоке server (для версий до 1.25 — параметр в строке listen) С 1.25.0: listen 443 quic reuseport; плюс заголовок Alt-Svc Для QUIC нужна сборка с OpenSSL 3.x, BoringSSL или quictls; штатный OpenSSL 1.1.1 не подойдёт
Apache Модуль mod_http2, директива Protocols h2 http/1.1 Штатной стабильной поддержки нет С prefork MPM выигрыш минимален; для h2 нужен event MPM и PHP через php-fpm
LiteSpeed / OpenLiteSpeed Включён по умолчанию Поддерживается нативно, включается галочкой Самый быстрый путь к h3 без пересборок
Caddy Включён по умолчанию Включён по умолчанию Настраивать нечего — достаточно открыть UDP 443
CDN (Cloudflare и аналоги) Включается переключателем Включается переключателем Работает даже если ваш сервер умеет только HTTP/1.1: протокол терминируется на стороне CDN
Панели (ISPmanager, cPanel) Обычно чекбокс в настройках домена или шаблон конфига Зависит от версии панели и веб-сервера Правки в конфигах напрямую панель может перезаписать при следующем сохранении домена
Виртуальный хостинг Как правило, уже включён Часто недоступен Проверьте фактическое состояние, а не описание тарифа; при отказе — тикет в поддержку

Обязательные проверки после включения

  1. Синтаксис конфигурации. Перед перезапуском — nginx -t или apachectl configtest. Ошибка в директиве уронит все сайты на сервере, а не один.
  2. Открытый UDP 443. Для HTTP/3 нужен именно UDP, не TCP. Забыть про правило файрвола — самая частая причина «включил, а не работает».
  3. Alt-Svc в ответе. Без этого заголовка браузеры не узнают про h3. Проверяется одной командой curl.
  4. Заголовок отдаётся на всех страницах. Если Alt-Svc добавлен только в один location, часть сайта останется на HTTP/2.
  5. Все поддомены и статика. Проверьте домены с картинками, шрифтами и медиа: часто основной сайт переехал, а поддомен со статикой забыли.
  6. Контрольный замер. Снимите метрики до и после на одинаковых условиях — один и тот же URL, одна сеть, режим инкогнито, несколько прогонов.

ЕСЛИ САЙТ ЗА CDN

Это самый дешёвый путь: включить HTTP/3 у провайдера CDN можно одним переключателем, и он будет работать даже с бэкендом на HTTP/1.1 — пользователь общается с узлом CDN, а тот уже ходит на ваш сервер по чему умеет. Побочные эффекты тоже есть: в логах бэкенда вы увидите IP прокси вместо реальных, а часть запросов вообще не дойдёт до сервера. Как это связано с SEO и что настраивать заранее — разбирали в материале про CDN и SEO.

Приёмы эпохи HTTP/1.1, от которых пора избавиться

Двадцать лет мы боролись с ограничением в шесть соединений и дорогими рукопожатиями. Родившиеся из этой борьбы техники после перехода на HTTP/2 превращаются из оптимизации в тормоз. Это едва ли не самая ценная часть темы: включить протокол — полдела, вторая половина — убрать костыли, которые ему мешают.

ПриёмЗачем делали на HTTP/1.1Что происходит на HTTP/2 и HTTP/3Что делать сейчас
Шардинг доменов (img1.site.ru, img2.site.ru) Обойти лимит в 6 соединений на хост Каждый домен — отдельное соединение, отдельные DNS и TLS-рукопожатия; мультиплексирование не работает между доменами Свести статику к одному хосту
CSS-спрайты Сократить число запросов за иконками Одна большая картинка грузится целиком ради трёх иконок; кэш инвалидируется полностью при любой правке Отдельные файлы или SVG-символы
Инлайн base64 в CSS Убрать запрос за изображением Base64 раздувает объём примерно на треть, ломает кэширование картинки и утяжеляет критический CSS Обычные файлы с нормальным кэшированием
Мегабандл всего JS в один файл Один запрос вместо тридцати Правка одной строки инвалидирует весь бандл; браузер не может начать выполнение до полной загрузки Умеренное разбиение: 5–15 логических чанков, а не 200 модулей и не один монолит
Домены без cookie Не гонять жирные cookie со статикой HPACK и так сжимает заголовки почти до нуля; лишний домен дороже экономии Отказаться, если нет других причин
Конкатенация всего CSS Сократить количество запросов Страница ждёт стили, которые ей не нужны Критический CSS инлайном, остальное — раздельно

Оговорка от практика: не бросайтесь дробить всё на атомы. Слишком мелкие файлы плохо сжимаются — gzip и brotli работают эффективнее на крупных объёмах, и триста файлов по 800 байт в сумме весят больше, чем десять по 24 КБ. Плюс каждый ресурс — это работа браузера по обработке. Здоровый ориентир: 10–20 файлов вместо одного монолита, но не двести.

Типичные проблемы внедрения и как их чинить

Собрали сценарии, которые встречаются на аудитах чаще всего, вместе с причинами и порядком действий.

СимптомВероятная причинаЧто делать
В конфиге h2 включён, в DevTools — http/1.1 Сайт открывается по HTTP без TLS, либо ALPN не согласуется из-за старой библиотеки OpenSSL Проверить редирект на HTTPS, обновить OpenSSL, проверить согласование через openssl s_client -alpn h2
HTTP/2 работает, HTTP/3 никогда не включается Нет заголовка Alt-Svc или закрыт UDP 443 Добавить Alt-Svc во все ответы, открыть UDP на файрволе и у хостера, проверить со второго визита
Главная по h2, картинки по http/1.1 Статика отдаётся с поддомена или другого сервера, где протокол не включали Включить h2 на всех хостах либо свести статику на основной домен
После включения выросла нагрузка на CPU Больше одновременных потоков и шифрование; на Apache — устаревший prefork MPM Перейти на event MPM и php-fpm, включить кэш, при необходимости — вынести TLS на прокси
Скорость не изменилась вообще Узкое место в TTFB бэкенда или в весе ресурсов, а не в транспорте Сначала кэширование и оптимизация запросов к БД, затем изображения, потом транспорт
Часть пользователей жалуется на обрывы Корпоративный файрвол или провайдер режет QUIC на UDP 443 Убедиться, что откат на HTTP/2 работает корректно; не отключать TCP-слушатель
Стало медленнее, чем было Сохранился шардинг доменов: вместо одного мультиплексированного соединения — четыре с отдельными рукопожатиями Убрать шардинг, свести ресурсы к одному хосту, перепроверить замеры
Панель хостинга затирает правки Конфиг генерируется из шаблона панели при каждом сохранении домена Править шаблон панели или использовать штатный чекбокс, а не файл напрямую

Отдельно про безопасность

HTTP/2 принёс не только скорость. В 2023 году громко прозвучала атака Rapid Reset, эксплуатировавшая механику быстрого создания и отмены потоков: одно соединение позволяло сгенерировать шквал запросов. Все актуальные версии веб-серверов проблему закрыли, но вывод остаётся практическим: включая новый протокол, обновляйте сам веб-сервер, а не только конфиг. Работать на nginx пятилетней давности с включённым h2 — плохая идея. Заодно проверьте лимиты одновременных потоков в настройках; значения по умолчанию у современных сборок разумные, но у старых сборок их иногда поднимали вручную.

Что это значит для SEO и роботов

Здесь важно разделить два эффекта: влияние на пользователя и влияние на робота.

Обход и индексация

Google официально объявил о переходе на обход по HTTP/2 в конце 2020 года: краулер сам решает, использовать ли вторую версию, исходя из выгоды — и никакого преимущества в ранжировании за это не даёт. Смысл для сайта в другом: мультиплексирование снижает накладные расходы на соединения, а значит робот при том же ресурсе успевает загрузить больше. Для крупных каталогов, где краулинговый бюджет реально ограничивает индексацию, это дополнительный, пусть и не решающий, аргумент.

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

Скорость как фактор ранжирования

И Яндекс, и Google учитывают скорость, но не так линейно, как хочется думать. Работает пороговая логика: катастрофически медленный сайт проигрывает, а между быстрым и очень быстрым разница в ранжировании небольшая. Гораздо надёжнее считать выигрыш через поведение: сокращение времени до первого экрана снижает отказы, а отказы — это уже вполне весомый сигнал в факторах ранжирования Яндекса. На мобильном трафике эффект выражен сильнее всего — там и RTT выше, и терпение пользователя короче, о чём подробно в материале про мобильную оптимизацию.

Деньги, а не позиции

Самый прикладной аргумент для владельца бизнеса — конверсия. Ускорение первого экрана на несколько сотен миллисекунд на мобильных устройствах даёт измеримый прирост доли пользователей, дошедших до карточки и корзины. Это не про SEO напрямую, это про то, что каждый уже оплаченный визит начинает приносить больше — механика подробно разобрана в статье про конверсию сайта. И в отличие от многих SEO-работ, здесь эффект наступает в день внедрения, а не через квартал.

Порядок работ: куда протокол встаёт в общем плане

Переход на новую версию HTTP — не первый и не последний шаг. Вот последовательность, в которой мы обычно разбираем производительность на проектах, от самого дешёвого к самому трудозатратному.

ПриоритетРаботаТрудозатратыОжидаемый эффект
1 Включить HTTP/2 (или проверить, что он уже включён) 15–30 минут админа Средний, на ресурсоёмких страницах — высокий
2 Настроить сжатие brotli/gzip и заголовки кэширования 1–2 часа Высокий, особенно на повторных визитах
3 Убрать наследие HTTP/1.1: шардинг, спрайты, base64 От нескольких часов до дней Средний, снимает торможение от костылей
4 Оптимизировать изображения: WebP/AVIF, размеры, lazy-loading Дни, зависит от каталога Очень высокий на контентных и товарных страницах
5 Ускорить бэкенд: кэш, индексы БД, профилирование Дни–недели Очень высокий, если TTFB выше 600 мс
6 Включить HTTP/3 От получаса (CDN) до дня (свой сервер) Заметный на мобильных и в удалённых регионах
7 Разобраться с JavaScript: чанки, отложенная загрузка, лишние виджеты Недели Решающий для INP и общей отзывчивости
8 Подключить CDN, если аудитория географически распределена Дни Высокий при разбросе по часовым поясам

Логика простая: сначала то, что даёт эффект за час работы и не требует участия разработки, потом то, что требует дней и согласований. Примеры того, как такая последовательность работ выглядела на реальных проектах, собраны в нашем портфолио. Протокол стоит первым именно поэтому — он дешёвый и безопасный. Полная картина технических работ по сайту собрана в чек-листе внутренней оптимизации, а если непонятно, с чего начинать в вашем случае, отправная точка — SEO-аудит сайта, где производительность разбирается вместе с остальной технической частью. Разброс стоимости работ по продвижению и что в них входит — на странице цен.

Мини-план внедрения за один рабочий день

Если хочется получить результат сегодня, а не через спринт, вот компактная последовательность.

  1. Замерьте базу. Три прогона основных типов страниц (главная, категория, карточка, статья) на мобильном профиле, зафиксируйте TTFB и LCP. Без этого замера вы не докажете результат ни себе, ни клиенту.
  2. Определите текущую версию по колонке Protocol — отдельно для документа, статики, шрифтов и сторонних скриптов.
  3. Включите HTTP/2 там, где его нет: своя конфигурация, панель или переключатель CDN. Проверьте конфиг перед перезапуском.
  4. Проверьте согласование ALPN и убедитесь, что все хосты проекта отвечают по h2.
  5. Включите HTTP/3, если версия сервера позволяет, добавьте Alt-Svc, откройте UDP 443, проверьте со второго визита и с мобильной сети.
  6. Уберите очевидные костыли HTTP/1.1: шардинг статики и base64 в критическом CSS дают эффект сразу и правятся без разработки.
  7. Повторите замер в тех же условиях и сравните. Сохраните оба отчёта — это ваш аргумент в разговоре с бизнесом.
  8. Поставьте мониторинг. Раз в месяц проверяйте, что протокол не отвалился после обновления панели или переезда: такое случается регулярно и молча.

Последний пункт недооценивают. Обновление панели хостинга, миграция на новый сервер, смена тарифа — любое из этих событий способно вернуть сайт на HTTP/1.1, и никто этого не заметит, пока кто-нибудь не откроет DevTools. Добавьте проверку версии протокола в регулярный технический чек-лист вместе с проверкой сертификата и robots.txt. Как выбрать площадку, на которой такие вещи не ломаются каждый квартал, разбирали в статье про хостинг и SEO.

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

Нужно ли переделывать сайт для перехода на HTTP/2 или HTTP/3?

Нет. Обе версии сохраняют семантику HTTP полностью: те же URL, методы, коды ответа, заголовки. Меняется только транспортный уровень, а приложение о переходе даже не знает. Код сайта, CMS, шаблоны и база данных остаются нетронутыми. Единственное требование — работающий HTTPS, потому что браузеры используют новые версии только поверх TLS. Работа сводится к правкам конфигурации веб-сервера или к переключателю у CDN-провайдера.

Стоит ли включать HTTP/3, если уже работает HTTP/2?

Стоит, если у вас существенная доля мобильного трафика или география аудитории выходит за пределы одного региона. Основной выигрыш HTTP/3 — устойчивость к потерям пакетов и экономия на рукопожатии, а это заметно именно на нестабильных сетях и высоких задержках. Если проект локальный, аудитория сидит на проводном интернете рядом с сервером, а сайт уже быстрый, прирост будет символическим — тогда логичнее вложить те же усилия в изображения и бэкенд.

Влияет ли версия протокола на позиции в Яндексе напрямую?

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

Может ли переход на HTTP/2 замедлить сайт?

Да, в двух сценариях. Первый — сохранившийся шардинг доменов: вместо одного мультиплексированного соединения браузер поднимает несколько с отдельными DNS и TLS-рукопожатиями, и выигрыш съедается. Второй — плохая сеть с потерями: из-за блокировки на уровне TCP одна потеря тормозит все потоки в соединении, тогда как HTTP/1.1 с шестью независимыми каналами терял только один. Первый случай лечится сведением ресурсов к одному хосту, второй — переходом на HTTP/3.

Настроил HTTP/3, но браузер всё равно идёт по HTTP/2. Где ошибка?

Проверьте три вещи по порядку. Первое: отдаётся ли заголовок Alt-Svc с указанием h3 и порта — без него браузер не узнает о поддержке. Второе: открыт ли UDP на 443 порту в файрволе сервера и на стороне хостера; QUIC работает по UDP, а правило обычно есть только для TCP. Третье: помните, что первое соединение всегда идёт по HTTP/2, и h3 включится только со следующего запроса — проверяйте после обновления страницы. Если всё настроено, но h3 не поднимается из конкретной сети, вероятнее всего QUIC режет провайдер или корпоративный файрвол.

Что делать, если хостинг не поддерживает нужную версию?

Быстрый путь — поставить перед сайтом CDN: он терминирует HTTP/2 и HTTP/3 на своей стороне, и пользователи получают новый протокол, даже если ваш сервер общается с CDN по HTTP/1.1. Второй вариант — тикет в поддержку хостинга: на shared-тарифах HTTP/2 сейчас обычно уже включён, вопрос закрывается за день. Если хостер отказывает и в этом, это повод пересмотреть площадку целиком: отсутствие HTTP/2 в 2026 году — маркер устаревшей инфраструктуры, и рядом с ним обычно обнаруживаются старый PHP и медленные диски.

Нужно ли отказываться от объединения CSS и JS в бандлы?

Не полностью — крайности вредны с обеих сторон. Мультиплексирование снимает штраф за количество запросов, поэтому один гигантский бандл больше не нужен: правка одной строки инвалидирует кэш целиком, и браузер ждёт весь файл. Но и дробить на двести микрофайлов не стоит: мелкие файлы хуже сжимаются, и каждый требует обработки браузером. Рабочий ориентир — 10–20 логических групп: критический CSS отдельно, основной код отдельно, редко используемые модули с отложенной загрузкой.

Как убедиться, что после включения ничего не сломалось?

Проверьте конфиг до перезапуска (nginx -t или apachectl configtest), затем после перезапуска пройдите основные сценарии: главная, каталог, карточка, форма заявки, оплата, личный кабинет. Отдельно посмотрите загрузку в консоли на ошибки, снимите коды ответа по ключевым URL и убедитесь, что нет всплеска 5xx в логах в первые сутки. Через несколько дней сверьте в Метрике время загрузки и долю отказов на мобильных и десктопе — это подтвердит эффект и покажет проблему, если она есть.

SEO-продвижение сайтов с 2005 года

Ускорим сайт на уровне сервера и доведём технику до нормы

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

  • Пакет «Старт» от 55 000 ₽/мес
  • Пакет «Стандарт» 75 000 ₽/мес
  • Пакет «Премиум» 95 000 ₽/мес
  • Бесплатный аудит и прогноз
  • Договор с гарантией результата
  • Отчёты каждую неделю

Комментарии (14)

Ольга

Включила колонку Protocol в DevTools прямо во время чтения. Документ идёт по h2, а картинки с поддомена — по http/1.1. Никогда бы не догадалась смотреть отдельно по хостам, спасибо за подсказку.

Дмитрий В.

Настроил на nginx 1.25 listen 443 quic reuseport, перезапустил, а в браузере всё равно h2. Три дня искал ошибку, оказалось — не отдавался Alt-Svc. У вас это прямо названо ошибкой номер один, жаль, что статья не попалась раньше.

AdminSEO Мастер

Дмитрий, классический сценарий. Проверьте заодно, что заголовок добавлен не в один location, а отдаётся на всех ответах, иначе часть сайта тихо останется на HTTP/2. И не забывайте про правило на UDP 443 — оно почти всегда прописано только для TCP.

vladimir77

Таблица сравнения трёх версий — лучшее, что я видел по теме на русском. Особенно строка про блокировку очереди: до неё не понимал, зачем вообще понадобился QUIC, если h2 уже мультиплексирует.

Анна Т.

Вопрос про раздел с наследием HTTP/1.1. У нас статика разнесена на два поддомена ещё со старой вёрстки, там сотни ссылок в шаблонах. Реально ли выигрыш от сведения на один хост стоит такой переделки, или лучше не трогать?

AdminSEO Мастер

Анна, посчитайте сначала цену вопроса: в Network посмотрите, сколько ресурсов реально уходит на второй поддомен. Если это десяток файлов — овчинка выделки не стоит, если половина картинок листинга — переделка окупится на мобильных. Можно начать мягко: новые ресурсы класть на основной хост, старые переносить постепенно.

Сергей_бизнес

Мне как владельцу зашёл последний блок про деньги, а не позиции. Наконец объяснение, почему не надо ждать скачка в выдаче от админской правки.

Тимур

Скептически отношусь к таким статьям, но тут понравилась честность в карточках «кому что даст». У нас лендинг из пяти файлов, включили h2 — разница в пределах погрешности. Хорошо, что вы это прямо написали, а не обещали чудо.

Екатерина_М

А что если хостинг на Apache с prefork и переехать пока некуда? Стоит вообще включать mod_http2 или будет только хуже по нагрузке?

AdminSEO Мастер

Екатерина, на prefork выигрыш действительно скромный, а CPU подрастает — это ровно тот случай из таблицы проблем. Дешёвый обходной путь описан в статье: поставить перед сайтом CDN, он терминирует h2 и h3 на своей стороне, а ваш Apache пусть спокойно живёт на http/1.1. Переход на event MPM с php-fpm — уже следующий шаг, когда будет окно на работы.

Гриша_фронт

Про мегабандл всё верно, но оговорка в конце спасает статью. А то после подобных материалов клиенты приходят с требованием разобрать сборку на двести модулей, потом мы это неделю чиним.

Ирина П.

Добавила $server_protocol в log_format, как советуете. За неделю картина такая: заметная доля запросов всё ещё http/1.1, и почти все они от ботов и старых парсеров. Живые пользователи давно на h2. Полезный способ увидеть реальность вместо догадок.

Максим

Не понял момент про 0-RTT. Если данные уходят до установления соединения, это же вроде небезопасно? Или там есть какая-то защита?

AdminSEO Мастер

Максим, вопрос по делу: у 0-RTT есть известное ограничение — такой запрос теоретически можно повторно воспроизвести, поэтому серверы разрешают в нём только безопасные операции вроде GET, а всё изменяющее состояние идёт уже после полного рукопожатия. Для владельца сайта это настраивается на стороне сервера или CDN и по умолчанию сделано разумно, специально ничего чинить не нужно.

Стас

Отдельное спасибо за абзац про Server Push. До сих пор натыкаюсь на старые гайды, где его подают как главную фичу второй версии.

Рустам

Магазин автозапчастей, листинг категории на полсотни картинок. После включения h2 картинки перестали приезжать порциями, визуально страница собирается заметно ровнее. TTFB почти не изменился, но LCP подтянулся. Ровно как в статье описано.

Алексей_Новосиб

Мы включили HTTP/3, а часть сотрудников заказчика из офиса жалуется, что сайт иногда подвисает при первом заходе. Похоже на то, что описано про корпоративный файрвол и UDP. Как правильно проверить, что откат на h2 работает, а не ломается?

AdminSEO Мастер

Алексей, главное — не выключать TCP-слушателя: пока сервер отвечает и по TCP 443, браузер сам откатится на h2 после неудачной попытки QUIC. Из проблемной сети откройте DevTools и посмотрите колонку Protocol на первом и втором заходе, плюс проверьте curl с той же машины. Если хотите, посмотрим конфигурацию на бесплатном аудите — такие вещи быстрее видно в живой выдаче заголовков.

Марго

Мини-план на один рабочий день забрала в работу целиком. Особенно пункт про замер до правок — мы вечно про него забываем, а потом нечего показать руководству.

Оставить комментарий

Спасибо! Ваш комментарий отправлен на модерацию и появится после проверки.