Мир http2
Как всё будет выгляд еть, когда http2 будет принят? Будет ли он принят?
http2 ещё широко не представлен и не используется. Мы не можем сказать точно как всё сложится. Мы видели, как использовался SPDY и мы можем сделать некоторые предположения и вычисления, основанные на этом и на дру гих прошлых и текущих экспериментах.
http2 уменьшает количество необходимых сетевых приёмов-передач, полностью избегает дилеммы блокировки начала очереди за счёт мультиплексирования и быстрого отклонения нежелательных потоков.
Он позволяет работать множеству параллельных потоков, число которых может превышать число соединений даже у наиболее активно использующих шардинг современных сайтов.
С приоритетами, корректно используемыми на потоках, шансы получить важные данные раньше менее важных значительно выше.
Собрав всё это вместе, я скажу, что очень высоки шансы, что это приведёт к ускорению загрузки страниц и повысит отзывчивость веб-сайтов. Коротко: лучше ощущения от веб-серфинга.
Насколько быстрее и насколько лучше мы увидим. Я не думаю, что мы пока готовы сказать. Во-первых, технология по-прежнему ещё молода, а во-вторых, мы ещё не видели аккуратных реализаций клиентов и серверов, которые по-настоящему используют всю мощь, которую предоставляет новый протокол.
Годами веб-разработчики и среды веб-разработки собирали полный набор приёмов и утилит для обхода проблем HTTP 1.1, некоторые из которых отмечены в начале этого документа, как причины разработки http2.
Большинство этих обходных путей, которые инструменты и разработчики теперь используют не задумываясь по умолчанию, вероятно ударят по производительности http2 или, по крайне мере, не воспользуются всеми преимуществами новой супер-силы http2. Спрайты и встраивание не должны использоваться совместно с http2. Шардинг вероятно будет вреден для http2, так как http2 выигрывает от использования меньшего числа соединений.
Проблема здесь конечно в том, что веб-разработчики должны будут разрабатывать и внедрять веб-сайты в мире, где в лучшем случае на небольшой период времени, будут как HTTP 1.1, так и http2-клиенты, и, для получения максимальной производительности всеми пользователями, будет затратно предлагать два различных варианта сайта.
Только по этой причине, я подозреваю, пройдёт какое-то время, прежде чем мы увидим полное раскрытие потенциала http2.
Конечно, пытаться задокументировать специфические реализации в подобном этому документах – полностью бесполезный труд, который обречён на провал и уст ареет за весьма короткий период времени. Вместо этого я объясню ситуацию в широком смысле и направлю читателей к списку реализаций на веб-сайте http2.
Уже сейчас существует большое количество реализаций и их число растёт день ото дня по мере работы над http2. В то же время, на момент написания, существует больше 40 реализаций и многие из них реализуют финальную версию спецификации.
Firefox всегда был браузером в авангарде самых новейших версий черновика, Twitter продолжает предоставлять сервисы по http2. Google в апреле 2014 запустил поддержку http2 на неcкольких тестовых серверах своих сервисов, а начиная с мая 2014 они поддерживают http2 в разрабатываемой версии браузера Chrome. Microsoft представил технический пререлиз следующей версии Internet Explorer с поддержкой http2. Safari и Opera заявили, что будут поддерживать http2.
curl и libcurl поддерживают как незащищённый http2, так и поверх TLS, используя одну из нескольких TLS-библиотек.
H2O, Apache Traffic Server и nghttp2 выпустили сервера с открытым исходным кодом с поддержкой http2.
Два наиболее популярных сервера Apache HTTPD и Nginx, поддерживающих SPDY, но до сих пор не представивших официльного релиза с поддержкой http2. Nginx выпустил «альфа патч», HTTP/2 модуль для Apache, названный mod_h2, также на пути к публичному релизу «уже скоро».
В процессе разработки протокола дебаты возникали снова и снова, и, конечно, есть некоторое число людей, которые верят, что протокол получился совершенно непра вильным. Я хотел бы отметить некоторые из наиболее типичных жалоб и аргументов против него:
Есть также вариации подразумевающие, что мир ещё больше зависит и контролируется Google. Это не правда. Протокол разработан внутри IETF тем же самым спо собом, как протоколы разрабатывались за последние 30 лет. Однако, все мы признательны Google за бесподобную работу над SPDY, который не только доказал, что возможно внедрять новый протокол таким способом, но и помог получить оценки того, что мы можем получить.
Google публично проанонсировали, что они удалят поддержку SPDY и NPN в Chrome в 2016 году и они призывают мигрировать сервера на HTTP/2.
В какой-то мере это так. Одна из главных причин, кроющейся за разработкой http2 – это исправление конвейерной обработки HTTP. Если в вашем случае не требовалась конвейерная обработка, то http2 не будет вам особо полезен. Это конечно не единственное достижение протокола, но самое значительное.
Как только сервисы начнут понимать всю мощь и возможности мультиплексированных потоков в одном соединении, я ожидаю, что мы увидим увеличение числа приложени й, использующих http2.
Небольшие REST API и простые программные применения HTTP 1.x не получат больших преимуществ от перехода на http2. Но, тем не менее, будет совсем немного минусов для большинства пользователей.
Это совсем не так. Возможности мультиплексирования значительно улучшают работу на соединениях с большими задержками для небольших сайтов, которые как правило не имеют географического распределения. Большие сайты зачастую уже более быстры и распределены для сокращения задержек при подключении пользователей.
В некоторой степени это верно. Согласование TLS даёт небольшие накладные расходы, но уже прилагаются усилия для ещё большего уменьшения числа запросов-ответов для TLS. Расходы на выполнение TLS-шифрования, по сравнению с передачей открытым текстом, не так незначительны и явно заметны, поэтому больше процессорного времени и электричества будет потрачено на том же самом трафике, как в небезопасном протоколе. Сколько и какие последствия это будет иметь – тема для высказываний и измерений. Смотрите, например, istlsfastyet.com как один из источников по теме.