В мае 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