Что такое http/2

http/2 — это вторая версия протокола HTTP, которая не менялась с 1997 года (до этого использовался протокол http/1.1). К основным нововведениям можно отнести:

мультиплексирование — одно из основных и критических нововведений в протоколе http/2. Скорость загрузки медийных файлов (да и запросов в целом) значительно увеличивалось при увеличении файлов на странице. К мультиплексированию относится возможность в рамках одного TCP-соединения передавать множество запросов web-браузером. В http/2 загрузка статического контента (js скриптов, изображений и т.п.) происходят параллельно.и старый формат:

разница очевидна.

Еще одним отличием протокола http/2 от http/1.1 является приоритизация. Приоритизация в http/2 реализована двумя методами: через вес и зависимости.

Если рассматривать приоритизацию через вес, то для каждого потока определяется вес, и на основе этих данных сервер распределяет нагрузку. (Данный метод используется также в протоколе SPDY).

Метод зависимостей является более важным для http/2. Он заключается в определенной последовательности загрузки в зависимости от типа контента (к примеру js-скрипты, css файлы в первую очередь а медийную часть и html потом).

 

Безопасность в http/2. Переход на https в протоколе http/2 имеет рекомендательный характер. Однако сами разработчики браузеров (официально браузеры Mozilla Firefox и Google Chrome) “навязывают” использовать TSL 1.2 и выше (https) соединение для работы http/2 протокола. В связи с этим перед тем как переходить на http/2 нужно проапгрейдится до https, иначе вы рискуете получить нерабочий сайт в двух самых популярных web браузерах.

 

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

 

Как включить http/2 в apache и nginx

Как уже было отмечено выше для работы протокола http/2 требуется наличие TSL 1.2 и выше. Исходим из того, что ваши настройки сервера уже предусматривают данные необходимые настройки.

 

http/2 и apache

Для работы http/2 на сервере Apache необходимо следующее: версия сервера Apache 2.4.17 и выше, а также подключенный модуль mod_http2.

В настройки конфигурации добавляем следующее:

# for a https server
Protocols h2 http/1.1
# for a http server
Protocols h2c http/1.1

Сохраните изменения и перезагрузите Apache.

http/2 и Nginx

Для работы http/2 в Nginx необходимо: версия Nginx 1.9.5 и выше.

В настройках конфигурации (../nginx.conf) в секции server найти:

listen 443 ssl;
и замените её на:

listen 443 ssl http2;

Сохраните изменения и перезагрузите Nginx.

http/2 и IIS

Поддержка http/2 в IIS реализовано в Windows 10 и Windows Server 2016.

 

Оптимизация сайтов на протоколе http/2

Учитывая особенности протокола http/2 некоторые ухищрения, которыми пользовались вебмастера на сайтах могут не только не работать, но и увеличивать время загрузки страниц сайта. Рассмотрим такие моменты:

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

Конкатенация JS и CSS также не является обязательным все также благодаря мультиплексирования данных.

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

 

SEO и http/2

По состоянию на 10 апреля 2016 года поисковые роботы Yandex не поддерживают протокол http/2 (Официальный ответ). Для Apache существует следующий костыль: добавляем в файл конфигурации следующие строчки:

BrowserMatch «yandex\.com/bots» noh2
Header unset Upgrade env=noh2
Данный костыль требует активных mod_headers и mod_setenvif

Понравилась статья? - поделись с друзьями!

Категория: ВебДев