8.1.1 Протокол HTTP/2 и его поддержка

TheHost HTTP2 Banner

HTTP/2 (сокр. HyperText Transfer Protocol/2) — вторая крупная версия сетевого протокола HTTP, используемая для доступа к ресурсам всемирной сети Интернет.

Необходимость создания HTTP/2 возникла из-за ограничений, с которыми столкнулся HTTP/1.x в контексте современных требований к веб-приложениям и интернет-трафику. Протокол HTTP/1.x, несмотря на свою значимость в развитии сетевых технологий, стал ощущать ограничения, такие как недостаточная производительность и эффективность передачи данных.

Одним из важных этапов в развитии HTTP/2 было внедрение технологии SPDY (от англ. “SPeeDY”), разработанной Google для улучшения производительности веб-приложений. SPDY стало отправной точкой для разработки HTTP/2, и многие его концепции и идеи были интегрированы в новый протокол.

Вкратце, реализация HTTP/2 подразумевает следующие преимущества:

  • Уменьшенная нагрузка на сеть;
  • Низкие затраты на парсинг данных;
  • Улучшенная производительность;
  • Более эффективная обработка данных между клиентом и сервером;
  • Обратная совместимость с HTTP/1.x.

Таким образом, актвиация HTTP/2 в большинстве случаев приводит к прямому повышению скорости загрузки страниц Вашего сайта для его посетителей.

Протестируем это на максимально простой странице шаблона WordPress. с множеством (30) одинаковых изображений.

Без включенного протокола HTTP/2 получаем: DOMContentLoaded: 732 ms, Load: 1.42 s и Finish: 2.14 s.

HTTP/1.x

С включенным HTTP/2 получаем: DOMContentLoaded: 580 ms, Load: 1.27 s и Finish: 2.08 s.

HTTP/2

Замеры были выполнены на простейшем примере из возможном, и в реальности использование HTTP/2 становится все заметнее по мере увеличения “веса” Ваших страниц.

Ключевые возможности HTTP/2 в сравнении с HTTP/1.1

Мультиплексирование (Multiplexing)

HTTP/1.1: В HTTP/1.1 каждый запрос требует своего собственного TCP-соединения, что приводит к множеству небольших параллельных запросов, называемых “шлейфами” (head-of-line blocking).

HTTP/2: HTTP/2 позволяет отправлять множество запросов и ответов через единое TCP-соединение одновременно. Это устраняет проблему “шлейфов” и позволяет эффективно использовать доступную пропускную способность сети.

Сжатие заголовков (Header Compression)

HTTP/1.1: Каждый запрос и ответ в HTTP/1.1 содержит заголовки, которые могут быть довольно объемными. Это приводит к избыточной передаче данных и нагрузке на сеть.

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

Приоритизация потоков (Stream Prioritization)

HTTP/1.1: Запросы в HTTP/1.1 обрабатываются в порядке их поступления, что может привести к задержкам в обработке важных запросов.

HTTP/2: HTTP/2 позволяет устанавливать приоритеты для потоков, определяя, какие запросы следует обрабатывать в первую очередь. Это позволяет более эффективно использовать ресурсы сервера и улучшает производительность веб-приложений.

Server Push

HTTP/1.1: В HTTP/1.1 сервер не может предварительно отправлять ресурсы клиенту без явного запроса.

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

Бинарный формат передачи данных

HTTP/1.1: HTTP/1.1 использует текстовый формат передачи данных, что может приводить к избыточности и неэффективности при передаче больших объемов данных.

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

Поддержка HTTP/2 и как включить его на наших услугах

Поскольку семантика протокола осталась неизменной, HTTP/2 в большинстве случаев возможно начать использовать практически без ощутимых усилий.

Дополнительно: веб-серверы, поддерживающие HTTP/2
  • Nginx c версии 1.9.5;
  • Apache с версии 2.4.17 поддерживает HTTP/2 с помощью модуля mod_http2 module;
  • Lighttpd с версии 1.4.59;
  • IIS поддерживает HTTP/2 начиная с Windows 10 и Windows Server 2016.

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

Непосредственно активировать HTTP/2 для Вашей услуги можно по отдельной инструкции.