8.1.1 Протокол HTTP/2 и его поддержка
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/2 получаем: DOMContentLoaded
: 580 ms, Load
: 1.27 s и Finish
: 2.08 s.
Замеры были выполнены на простейшем примере из возможном, и в реальности использование 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 для Вашей услуги можно по отдельной инструкции.