Перейти к содержимому
BestSite

3 мин чтения

HTTP и HTTP/2: ключевые различия

Подробно разбираем, чем HTTP/2 отличается от HTTP/1.1: мультиплексирование, сжатие заголовков, Server Push и их влияние на скорость сайтов.

HTTP и HTTP/2: ключевые различия

Проблема HTTP/1.1

HTTP — основа современного веба. С момента появления в 1997 году HTTP/1.1 ежедневно обслуживает миллиарды запросов. Но в его архитектуре заложено фундаментальное ограничение: он работает по строгой модели «один запрос — один ответ» на каждое TCP-соединение.

Из-за этого возникает известное узкое место — блокировка начала очереди (Head-of-Line Blocking, HOL): браузер не может отправить следующий запрос, пока не получит ответ на текущий. Чтобы обойти это, браузеры открывают по 6–8 параллельных соединений на домен, а разработчики прибегают к разным ухищрениям:

  • объединяют CSS- и JavaScript-файлы в один;

  • используют спрайты, чтобы сократить число запросов за изображениями;

  • распределяют ресурсы по нескольким доменам (domain sharding).

Такие обходные пути усложняют проект и его поддержку — и именно эти проблемы должен был решить HTTP/2.

Что нового в HTTP/2

Мультиплексирование — главное изменение

Самое важное улучшение HTTP/2 — мультиплексирование. Теперь одно TCP-соединение может одновременно передавать сотни запросов и ответов. Каждый из них разбивается на небольшие бинарные фреймы с уникальным идентификатором потока, поэтому сервер и клиент могут свободно их чередовать.

Это устраняет HOL-блокировку на уровне HTTP и делает ненужными такие приёмы, как domain sharding и склейка файлов.

Бинарный протокол

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

Сжатие заголовков с помощью HPACK

В HTTP/1.1 такие заголовки, как Cookie, User-Agent и Authorization, целиком отправляются с каждым запросом — зачастую это сотни байт, которые повторяются снова и снова.

HTTP/2 сжимает заголовки алгоритмом HPACK. Он хранит общую таблицу уже отправленных заголовков и передаёт только изменения. Обычно это уменьшает объём заголовков на 85–95%.

Server Push

В HTTP/2 у сервера появилась возможность заранее отправлять ресурсы, ещё до того как клиент их запросит. Например, когда браузер запрашивает HTML-страницу, сервер может сразу отправить CSS- и JS-файлы, которые точно понадобятся.

На практике Server Push оказалось сложно правильно настроить, и он не всегда ускорял загрузку. В HTTP/3 от него фактически отказались.

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

HTTP/2 позволяет клиенту назначать каждому потоку уровень приоритета. Браузер может сообщить, что CSS важнее фоновых изображений, и сервер распределит пропускную способность разумнее.

Сравнение

  • Формат: HTTP/1.1 — текстовый, HTTP/2 — бинарный.

  • Соединения: HTTP/1.1 — 6–8 параллельных, HTTP/2 — одно мультиплексированное.

  • Заголовки: в HTTP/1.1 повторяются целиком, в HTTP/2 сжимаются с помощью HPACK.

  • Server Push: в HTTP/1.1 нет, в HTTP/2 есть.

  • Приоритизация: в HTTP/1.1 нет, в HTTP/2 есть.

  • Шифрование: в HTTP/1.1 необязательно, в HTTP/2 на практике обязательно (TLS).

Влияние на реальную производительность

Переход на HTTP/2 обычно ускоряет загрузку страниц на 10–50%, особенно если на странице много ресурсов. Сильнее всего выигрыш заметен в сетях с высокой задержкой — на мобильном интернете и при работе с географически удалёнными серверами.

И самое приятное: код приложения менять не нужно. HTTP/2 работает на транспортном уровне, поэтому обычно достаточно включить его на сервере или в CDN.

Как проверить, используется ли HTTP/2

Откройте в браузере DevTools (F12), перейдите на вкладку Network и щёлкните правой кнопкой мыши по заголовкам столбцов, чтобы включить столбец Protocol. Для соединений по HTTP/2 там будет указано h2. Большинство современных сайтов и CDN уже работают по HTTP/2.

Вывод

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

Расскажите о своём проекте

Опишите задачу в нескольких предложениях. Мы вернёмся с вопросами или предварительной оценкой.

Emailoffice@bestsite.az

Что будет после заявки

  1. 1Читаем заявкуРазбираемся в задаче и при необходимости задаём уточняющие вопросы.
  2. 2Обсуждаем деталиСозваниваемся или переписываемся, чтобы понять цели, сроки и бюджет.
  3. 3Присылаем оценкуГотовим предварительную оценку сроков и стоимости работ.

Отправляя форму, вы соглашаетесь с политикой конфиденциальности.