• База знаний
  • /
  • Блог
  • /
+380 (44) 364 05 71

В мае 2015 на вооружение веб-мастеров поступил утвержденный стандарт HTTP/2, благодаря существенным усовершенствованиям и опциям обрел популярность у пользователей и практически сразу был внедрен во все основные браузеры и веб-сервера (в т.ч. NGINX и NGINX Plus). По данным портала caniuse.com, в октябре 2016 года более 77% браузеров поддерживают стандарт HTTP/2 – и эта цифра растет.

В основе данного стандарта лежит протокол SPDY, созданный разработчиками Google. Старый протокол будет постепенно выведен из использования, в частности Google Chrome сразу объявил о том, что с начала 2016 года SPDY перестанет поддерживаться.

Примечательно, что NGINX в свое время активно развивал протокол SPDY, и его приемника HTTP/2 продвигает одним из первых. Они же провели сравнение протоколов, подробно описали внедрение HTTP/2 в работу серверов и браузеров.

Выделим основные характеристики нового протокола. Они во многом схожи с SPDY:

  • HTTP/2 – протокол, построенный не на текстовом, а на бинарном формате, благодаря чему он компактне, следовательно работает быстрее;

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

  • новый протокол HPACK используется в HTTP/2 для сжатия заголовков (в предшественнике, SPDY, применялся gzip).

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

HTTP/2 плюсы и минусы

Несмотря на описанные выше характеристики, которые можно смело записывать в число преимуществ нового протокола HTTP/2 и простоту его внедрения, его нельзя назвать полностью универсальным. Дело в том, что для некоторых приложений он придется кстати, а для других не будет столь полезным.
Самый простой пример: в большинстве случаев сайты, которые работают с SSL/TLS (для удобства будем писать TLS, подразумевая оба криптографических протокола), с HTTP/2 будут загружаться быстрее. Без TLS скорость будет меньше, и его нужно будет включить перед включением HTTP/2. Правда, при этом сам TLS снизит производительность, и все ускорения за счет новых алгоритмов будут бесполезными. Поэтому такой вариант развития событий следует проверить.

Назовем другие преимущества, помимо названных ранее, которые потенциально может дать применение HTTP/2:

  • упрощение веб-приложений за счет исключения HTTP/1.х оптимизаций, снижающих производительность и неудобства для разработчиков;

  • возможность ускорить работу сложных страниц, на которых используется HTML, CSS, JavaScript, большое количество flash-роликов, картинок за счет грамоного расставления приоритетов;

  • обязательное использование TLS позволяет обеспечить максимальную защиту.

Недостатки у HTTP/2 тоже есть, и их можно назвать как существенными, так и пустяковыми – это кто как относится. Назовем их:

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

  • использование TLS не всегда оправдано, особенно когда нет необходимости защиты информации (особенно если она уже зашифрована);

  • на удаление сделанных ранее HTTP/1.x оптимизаций требуется время, которое оценивается звонким долларом;

  • веб-приложения, оперирующие с большими файлами или ресурсоемкими аудио/видеопотоками, будут работать медленнее, а мультиплексирование будет полностью лишенным смысла.

Условно говоря, практически все HTTP/2 сводится к производительности. Как уже было сказано, для сложных веб-страниц этот протокол скорее всего будет хорошим ускорителем. Это подтверждается испытаниями NGINX, результаты которого были разделены на группы в зависимости от типичной круговой задержки (round-trip time - RTT):

  • низкая задержка (0-20 мс): почти нет разницы между HTTP/1.x, HTTP/2, и HTTPS;

  • средняя (характерное для Интернет - 30-250 мс): в данном случае HTTP/2 немного быстрее чем HTTP/1.x, при этом оба протокола быстрее HTTPS. Задержка между двумя соседними городами США – примерно 30 мс, а для расстояния около 3000 миль (между городами восточного и западного побережья США) – в районе 70 мс. Задержка между Лондоном и Токио (выбран один из наиболее коротких маршрутов) составила примерно 240 мс.

  • высокая (300 мс и более): HTTP/1.x быстрее чем HTTP/2, а он в свою очередь быстрее чем HTTPS.

Наш виртуальный хостинг, начиная с сервера S43 поддерживает протокол HTTP/2. Использовать ли его в своих проектах решаете Вы!

В следующей статье я расскажу о том как настроить поддержку HTTP/2 на сервере NGINX и Apache.

Дата: 18.10.2016
Автор: Евгений
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
Спасибо, что выбираете FREEhost.UA