Комментарии 10
Спасибо за статью. Было интересно узнать детали разницы между HTTP и HTTP/2.
Интерессно было это потому, что например в различных системах как например Kafka тоже есть сжатие, перед тем как отправить пакет. В протоколе это тоже предусмотренно. Думаю, что двойное сжатие не всегда оптимально для процесса. Это можно в HTTP/2 отключить? Или отключение ни на что не повлияет?
http://www.http2demo.io/ показывает увеличение скорости загрузки по HTTP 2 в 4-10 раз, что гораздо выше 30-50%, указанных в статье.
При просмотре панели Network в браузере вижу, что 170 тайлов картинки грузятся по HTTP 1.1 в 6 потоков, запрос следующих тайлов ожидает получения ответа предыдущих 6. По HTTP 2 тайлы загружаются одновременно в большом количестве потоков, хотя спецификация требует, чтобы соединение к одному хосту было только одно. Вопрос - как тайлы пролезают одновременно целой пачкой по одному соединению?
![](https://habrastorage.org/getpro/habr/upload_files/316/c40/231/316c40231906bdac94e16417a1cea7d3.png)
Это синтетическое демо возможностей протокола и прироста производительности в 4-10 раз вы никогда не увидите на более или менее реальном примере. Посмотрите хотябы на результаты на моем не очень быстром интернете.
![](https://habrastorage.org/getpro/habr/upload_files/35c/83c/e4b/35c83ce4b622bd99a5636add5ba02892.png)
Так что прирост на 30-50% — это то, на что вы можете рассчитывать в реальности.
С чего вы взяли, что спецификация требует устанавливать только одно соединение с хостом? Их может быть множество, и в каждом соединении может существовать несколько потоков, которые грузят ресурсы одновременно.
Добавлю, что большинство браузеров не будут использовать HTTP2 без наличия SSL-сертификата
В HTTP/1.1 появились постоянные соединения keep-alive.
Сами постоянный соединения появились в HTTP/1.0, при указании соответствующего заголовка. В HTTP/1.1 соединение стало keep-alive по умолчанию и без указания заголовка.
Большое спасибо за статьи. Кратко, но интересно и полноценно.
Понимаю, что всё зависит от ваших желаний и возможностей, но был бы рад, если бы вы написали ещё и про HTTP/3.
Ультимативный гайд по HTTP. HTTP/1.1 vs HTTP/2