URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 104775
[ Назад ]

Исходное сообщение
"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"

Отправлено opennews , 17-Сен-15 22:16 
В состав основных исходных текстов nginx принят (http://mailman.nginx.org/pipermail/nginx-devel/2015-Septembe... модуль с реализацией протокола HTTP/2, соответствующего спецификациям RFC 7240 (http://www.rfc-editor.org/rfc/rfc7540.txt) и RFC 7241 (http://www.rfc-editor.org/rfc/rfc7541.txt) (расширение HPACK для сжатия заголовков). Реализация HTTP/2 представлена в виде модуля ngx_http_v2 (включается через "configure --with-http_v2_module"), который заменил собой модуль ngx_http_spdy. Поддержка протокола SPDY, методы которого легли в основу HTTP/2, удалена из состава nginx.


Основные особенности (http://daniel.haxx.se/http2/) (PDF (https://github.com/vlet/http2-explained/blob/master/http2.ru... HTTP/2.0:

-  Применение бинарного протокола, оперирующего передачей бинарных кадров. Каждый кадр имеет заголовок с информацией о типе, размере, опциях и идентификаторе потока. Кадры с типом DATA используются для передачи данных, HEADERS - HTTP-заголовков, RST_STREAM - для досрочного прерывания отправки данных;

-  Мультиплексирование и распараллеливание потоков в рамках одного TCP-соединения. Пакеты разных потоков смешиваются и, в отличие от конвейерной передачи HTTP/1.1, не ожидают окончания отправки запроса. Поддержка эффективной двунаправленной передачи данных. Возможность мультиплексирования при обращении к разным хостам, что позволяет дополнительно ускорить  одновременную загрузку web-контента с разных сайтов (в  SPDY мультиплексирование поддерживается только для одного хоста);

-  Возможность установки приоритетов и зависимостей для потоков, что позволяет выделить наиболее важные потоки, которые нужно выполнить в первую очередь, а также определить зависимость одного потока от другого;


-  Сжатие HTTP-заголовков. В том числе поддерживается устранение дубликатов заголовков и Cookie, повторяющихся для серии запросов к одному сайту. Допускается определение отдельных заголовков не подлежащих сжатию;


-  Низкая чувствительность к задержкам;

-  Средства для  согласования протокола между клиентом и сервером, позволяющие выбрать HTTP/1.1, HTTP/2.0 и другие протоколы: сервер предоставляет список поддерживаемых протоколов, которые может выбрать клиент. Для шифрованных соединений параметры TLS согласовываются при помощи протокола APLN, при котором клиент сообщает список поддерживаемых опций, а сервер выбирает наиболее оптимальный для себя вариант;


-  Обеспечение высокого уровня совместимости с HTTP/1.1: сохранены  заголовки, схема URI, коды состояния и методы (GET, POST и т.п.). Обеспечена возможность создания прокси для доступа клиентов HTTP/1.1 к серверам HTTP/2.0;

-  Возможность установки шифрованных (HTTPS) и нешифрованных соединений (HTTP). Шифрование осуществляется с использованием TLS 1.2 или более новой версии. Несмотря на то, что спецификация допускает создание нешифрованных соединений, разработчики Firefox и Chrome намерены обеспечить работу HTTP/2.0  только поверх TLS;

-  Поддержка технологии Server push (https://ru.wikipedia.org/wiki/%D0%A2%D0%... для передачи данных от сервера к клиенту (например, когда сервер считает, что после определённого запроса обязательно будут затребованы другие данные, он может отправить эти данные не дожидаясь фактического запроса);

-  Поддержка HTTP/2.0 уже реализована в браузерах Firefox 36+, Chrome (требуется сборка с "--enable-spdy4") и IE 11. Серверные реализации пока ограничиваются (https://github.com/http2/http2-spec/wiki/Implementations)&nb... (http://open.litespeedtech.com/), H2O (https://github.com/kazuho/h2o), nghttp2 (https://nghttp2.org/) и некоторыми библиотеками на высокоуровневых языках.


URL: http://mailman.nginx.org/pipermail/nginx-devel/2015-Septembe...
Новость: http://www.opennet.me/opennews/art.shtml?num=42980


Содержание

Сообщения в этом обсуждении
"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Есюки , 17-Сен-15 22:16 
не в курсе, подскажите в бесплатной версии все это будет доступно?

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 17-Сен-15 23:00 
причем тут платная? первая ссылка в тексте

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 18-Сен-15 08:36 
Он наверно имел ввиду всёвключеноизкаробки

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Барак Обама , 17-Сен-15 23:42 
Мы уже используем в продакшене опенсорц патч для http2 в nginx,

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Igy , 17-Сен-15 22:17 
Шикарно! Ускорение работы сайтов из каробки!

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено th3m3 , 17-Сен-15 22:48 
Не прошло и полгода.

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Какаянахренразница , 18-Сен-15 05:18 
Хочу. Как это бэкпортировать?

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено eRIC , 18-Сен-15 12:10 
22.09.2015 будет очередной релиз 1.9.5, тогда можете смело играться :)

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Какаянахренразница , 18-Сен-15 13:59 
> 22.09.2015 будет очередной релиз 1.9.5, тогда можете смело играться :)

Благодарствую за ценные сведения.


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Sylvia , 18-Сен-15 20:55 
http://nginx.org/patches/http2/
если невтерпеж )

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Анончег , 19-Сен-15 17:00 
спасибо, потестировал!

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 19-Сен-15 23:31 
> спасибо, потестировал!

И как, много багов нашел?


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Джо , 18-Сен-15 08:09 
Интересно было бы посмотреть есть ли реальный плюс от этого. Яндекс тестировал в свое время SPDY и не заметил каких-либо улучшений: http://habrahabr.ru/company/yandex/blog/222951/ Если заметных улучшений не будет, то этот HTTP/2 просто усложнение и увеличение различного рода векторов атаки на сервер (ну или на клиент).

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 18-Сен-15 09:21 
Судя по описанию они не стали отказываться от костылей HTTP/1.1: шардинг, склейка большого числа css/js/img в блобы, поэтому и не увидели больших преимуществ. Чтобы увидеть преимущества http2 надо отказаться от этих костылей, задействовать server push.
Зацените, например, разницу скорости загрузки страницы со 180 картинками по http2 vs http/1.1, особенно если высокая задержка: https://http2.golang.org/gophertiles

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 18-Сен-15 15:54 
> склейка большого числа css/js/img в блобы

Оптимизацию теперь называют костылем, однако. Сжатие тоже костыль наверное? Подкрутить ядро поди тоже костыль?


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 18-Сен-15 15:56 
>> склейка большого числа css/js/img в блобы
> Оптимизацию теперь называют костылем, однако. Сжатие тоже костыль наверное? Подкрутить
> ядро поди тоже костыль?

Зафигачили индексы в СУБД - еще один костыль.


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аналитик , 18-Сен-15 16:38 
>>> склейка большого числа css/js/img в блобы
>> Оптимизацию теперь называют костылем, однако. Сжатие тоже костыль наверное? Подкрутить
>> ядро поди тоже костыль?
> Зафигачили индексы в СУБД - еще один костыль.

Установить любой софт не глядя, тоже костыль.


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Имя , 18-Сен-15 20:14 
Ок. Поменяли один файл из 100, браузер качает склееную простыню из 100 файлов заново, вместо того, чтобы быстро загрузить один изменившийся. Это не оптимизация — это костыль для обходя проблемы с закачкой большого числа файлов в HTTP/1.1. В http2 такой проблемы нет.

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено rshadow , 18-Сен-15 23:07 
Все правильно. И картинками проще управлять раздельными. И js с css на мелкие файлы логически разбивать, не заморачиваясь со сборкой. Все это несомненный плюс.

А вот сделать из текстового протокола бинарный, это уже плюс сомнительный.


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 19-Сен-15 04:37 
Ощущение что вы css/js копи пастом собираете, проблемы то нет.

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 19-Сен-15 23:48 
> Ощущение что вы css/js копи пастом собираете, проблемы то нет.

Не, вот знаете, если протокол диктует представление контента - это таки хвост виляет собакой, а не что-нибудь еще.


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 19-Сен-15 12:34 
Трафик http/1.1 всё равно gzip'ом жмётся почти всегда.

"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аналитик , 19-Сен-15 13:10 
> Все правильно. И картинками проще управлять раздельными. И js с css на
> мелкие файлы логически разбивать, не заморачиваясь со сборкой. Все это несомненный
> плюс.
> А вот сделать из текстового протокола бинарный, это уже плюс сомнительный.

Даешь обфускацию с DRM js/css,


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 19-Сен-15 23:33 
> Даешь обфускацию с DRM js/css,

Так фигня вопрос - сделать шифрование или сжатие на JS вообще как два байта переслать. А уж с помощью WS можно произвольный протокол запустить поверх. Хотя при сильном желании можно и поверх HTTP.


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 19-Сен-15 23:47 
> А вот сделать из текстового протокола бинарный, это уже плюс сомнительный.

Ну да, жыпег передаваемый в ответе на GET - такой из себя весь текстовый. Да и gzip-encoding ты врядли на глаз декодировать сможешь.


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 19-Сен-15 04:39 
> Ок. Поменяли один файл из 100, браузер качает склееную простыню из 100
> файлов заново, вместо того, чтобы быстро загрузить один изменившийся. Это не
> оптимизация — это костыль для обходя проблемы с закачкой большого числа
> файлов в HTTP/1.1. В http2 такой проблемы нет.

Это не проблема. Хотя если вы меняете css/js 7 раз в день то да, вам просто необходим http2


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Аноним , 19-Сен-15 23:45 
> Это не проблема.

Вообще-то это проблема. Если сделать сайт "как логично" а не "как технические ограничения HTTP 1.1 диктуют" - он будет очень медленно грузиться на соединениях с большим RTT. Конечно, есть пайплайнинг. Но в целом HTTP 1.1 обладает рядом бестолковостей, которых у HTTP 2 нет.

> то да, вам просто необходим http2

Должен же был прийти кто-то и избавить сайтостроителей от адовых костылестроений. Логично что это оказался кто-то типа гугля, который выкусывает по полной. Вы знаете, когда надо изгибать контент под интимные особенности протокола - это таки недостаток протокола прежде всего. Хотя с сжатием заголовков они имхо несколько перемудрили.


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено Джо , 23-Сен-15 11:09 
> Должен же был прийти кто-то и избавить сайтостроителей от адовых костылестроений.

Костыли HTTP1.1 понятны и в принципе ничего сложного в них нет. Тут главное чтобы HTTP2.0 не добавит своих проблем и геморроя, сложностей с разработкой и отладкой, а также проблем с безопасностью.


"В кодовую базу nginx добавлен модуль для поддержки HTTP/2"
Отправлено абвгдейка , 18-Сен-15 12:22 
nginx 2.0 - теперь и http/2.0 :)