The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

20.02.2018 20:39  Выпуск nginx 1.13.9 c поддержкой технологии HTTP/2 Server Push

Подготовлен выпуск основной ветки высокопроизводительного HTTP-сервера nginx 1.13.9, в котором реализован механизм Server Push для протокола HTTP/2. Server Push предоставляет возможность отправки ресурсов от сервера к клиенту, не дожидаясь их явного запроса (например, подобным образом можно передавать файлы CSS, скрипты и изображения, которые необходимы для отрисовки страницы).

Для отправки push-запросов используется уже установленное клиентом соединение. Т.е. клиент подключается и запрашивает определённую страницу, после этого сервер на основании своих настроек или содержимого переданного клиентом заголовка Link сам инициирует передачу определённых ресурсов через уже установленное соединение HTTP/2, не дожидаясь запроса этих ресурсов от клиента. При этом клиент может отвергнуть попытку push-отправки, вернув флаг RST_STREAM.

Переданный через push-обращение контент сохраняется на стороне клиента в специальном кэше, ассоциированном с текущим HTTP/2-соединением. Когда в процессе обработки страницы клиент дойдёт до запроса связанных с ней ресурсов (css, js, картинки и т.п.), перед фактической отправкой каждого запроса, будет выполнена проверка в кэше. Если ресурс уже передан сервером и находится в кэше, то клиент загрузит этот ресурс из локального кэша не формируя внешний запрос к серверу. После закрытия соединения HTTP/2 содержимое кэша очищается.

При этом есть важные особенности: Глобальный кэш браузера имеет больший приоритет, чем кэш соединения HTTP/2, поэтому даже если push-запросом был передан более свежий ресурс, браузер продолжит использование ресурса из своего глобального кэша, если он не потерял актуальность (т.е. трафик будет потрачен впустую). С другой стороны, так как одно HTTP/2 соединение может обслуживать загрузку разных страниц с одного хоста, то загруженные через push ресурсы могут совместно использоваться при загрузке разных страниц.

Для управления отправкой push-запросов в новом выпуске nginx реализованы директивы:

  • "http2_push {uri}" для включения упреждающей отправки заданных ресурсов (например, "http2_push /main.css") в составе первого ответа, не дожидаясь их явного запроса. В URI допустимо использование переменных. В одном блоке конфигурации может быть задано несколько директив http2_push. Для обеспечения должного уровня защиты обрабатываются только относительные пути к ресурсу;
  • "http2_push_preload" - данные о ресурсах, которые следует передавать через Server Push, определяются на основе анализа содержимого отправляемых клиентом HTTP-заголовков Link;
  • "http2_max_concurrent_pushes" - максимально допустимое число одновременных push-запросов, сопровождающих ответ.

Кроме поддержки Server Push в nginx 1.13.9 внесены следующие изменения:

  • Исправлена ошибка, из-за которой в логах могли появляться сообщения "header already sent" при использовании кэша;
  • Устранён крах (segmentation fault) рабочего процесса, который мог произойти если при использовании директивы 'ssl_verify_client' в виртуальном сервере не был указан SSL-сертификат;
  • Внесены исправления в модули ngx_http_v2_module и ngx_http_dav_module.


  1. Главная ссылка к новости (https://www.nginx.com/blog/ngi...)
  2. OpenNews: В nginx добавлена поддержка технологии HTTP/2 Server Push
  3. OpenNews: Выпуск сервера приложений NGINX Unit 0.5 с поддержкой Perl
  4. OpenNews: На соревновании Pwn2Own 2018 появились номинации за взлом nginx, OpenSSL и Virtualbox
  5. OpenNews: Выпуск nginx 1.13.8
  6. OpenNews: Релиз HTTP-сервера nginx 1.12.0
Лицензия: CC-BY
Тип: Программы
Ключевые слова: nginx, http2, push
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Показать все | RSS
 
  • 1.1, Аноним, 21:11, 20/02/2018 [ответить] [смотреть все]     [к модератору]
  • –2 +/
    Если взглянуть на график, то http 2 заметно медленнее обычного http, несмотря на... весь текст скрыт [показать]
     
     
  • 2.2, commiethebeastie, 21:16, 20/02/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +12 +/
    Его с HTTPS надо сравнивать.
     
  • 2.3, Аноним, 21:52, 20/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –1 +/
    Ну для вас это сложности Для гугла и фейсбука - нет ... весь текст скрыт [показать] [показать ветку]
     
  • 2.6, Аноним, 22:10, 20/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –3 +/
    Работа ради работы - деятельность нужна работникам, их руководителям, руководите... весь текст скрыт [показать] [показать ветку]
     
  • 2.8, Аноним, 23:16, 20/02/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • –5 +/
    молчи лучше. Хттп 1.1 должен умерет
     
     
  • 3.9, Аноним, 23:55, 20/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Почему?
     
     
  • 4.11, Аноним, 01:06, 21/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +15 +/
    Это версионный фашист. Все кто пользуются не самой последней версией по его мнению должны умереть.
     
  • 2.10, Crazy Alex, 00:00, 21/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Чтобы избавиться от нешифрованного HTTP, не потеряв время на лишнем раундтрипе, ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.12, Аноним, 01:08, 21/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ты ещё поди за сустемг в том же ключе топил пару лет назад Скорость наше всё, ... весь текст скрыт [показать]
     
     
  • 4.23, Crazy Alex, 19:33, 21/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Я на системг только что матом не ругался Потому что кривые архитектурные решени... весь текст скрыт [показать]
     
     
  • 5.29, Макс, 12:46, 22/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Даже между двумя, рядом стоящими серверами, изолированными от внешнего мира?
     
     
  • 6.34, XoRe, 15:37, 24/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Зависит от того, как сделаете у себя вы ... весь текст скрыт [показать]
     
  • 3.13, Аноним, 01:16, 21/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ради избавления от лишнего rtt в tls 1 3 сделали zero rt На мобильном интернете... весь текст скрыт [показать]
     
     
  • 4.14, Аноним, 01:34, 21/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    мол все хорошо, но 8230 барабанная дробь 8212 uBlock Origin заблочил паралл... весь текст скрыт [показать]
     
     
  • 5.19, Аноним, 04:32, 21/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Невероятно И с учетом этого смыслом сущестования HTTP 2 Server Push будет ... весь текст скрыт [показать]
     
  • 4.16, Аноним, 02:43, 21/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Вообще-то для этого есть флаг SETTINGS_ENABLE_PUSH, который можно установить на ... весь текст скрыт [показать]
     
  • 4.17, Аноним, 02:54, 21/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    Как ты думаешь, откуда взялся порог от 4 до 8 к серверу в браузерах И почему эт... весь текст скрыт [показать]
     
  • 4.24, Crazy Alex, 19:41, 21/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Мне абсолютно наплевать, как в хромиуме что делается Возможности протокола - эт... весь текст скрыт [показать]
     
  • 4.35, XoRe, 15:40, 24/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ну уж явно не из за нестабильного интернета, а ради распараллеливания нагрузки ... весь текст скрыт [показать]
     
  • 3.36, Аноним, 08:58, 27/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Кстати, именно это и является его проблемой Т к при плохом канале мобильный ин... весь текст скрыт [показать]
     
  • 2.15, Аноним, 02:26, 21/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +2 +/
    Только у nginx и прочих недосерверов В h2o есть поддержка определения, посещалс... весь текст скрыт [показать] [показать ветку]
     
  • 2.18, Аноним, 02:55, 21/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –2 +/
    Есть HTTP 2-сервера например nghttpx поддерживают режим без SSL Проблема не в... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.30, Аноним, 18:19, 22/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Уж не производитель на букву Г придумал этот протокол?
     
  • 2.20, qwerty_qwert1, 09:23, 21/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Изначально, чтобы в момент времени t быть уверенным что файлы 1,2,3 уже загружен... весь текст скрыт [показать] [показать ветку]
     
  • 1.4, Аноним, 22:04, 20/02/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Было уже.
     
     
  • 2.7, Аноним, 22:19, 20/02/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    На каждый бранч по новости.
     
  • 1.21, Ilya Indigo, 11:56, 21/02/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    > Глобальный кэш браузера имеет больший приоритет, чем кэш соединения HTTP/2, поэтому даже если push-запросом был передан более свежий ресурс, браузер продолжит использование ресурса из своего глобального кэша.

    Гениально!

     
     
  • 2.22, Аноним, 12:24, 21/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –1 +/
    Именно, бесполезный механизм который невозможно синхронизировать с алгоритмами к... весь текст скрыт [показать] [показать ветку]
     
  • 2.26, Астролог, 23:28, 21/02/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Гениально было бы раздавать кэш через deb пакеты, а так шило на мыло.
    Вообще очень похоже что едиственный смысл http/2 пересадить всех на https, который как бы не обязательный но почему то все браузеры при работе по http/2 его требуют.
     
  • 1.25, xm, 22:46, 21/02/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    Графики ускорения загрузки/отображения сайта при грамотной реализации push подтверждают мои замеры с использованием H2O которые я приводил в предыдущей версии этой новости.
     
  • 1.27, Аноним, 07:04, 22/02/2018 [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Смехотворно официальная версия Nginx 1 13 не умеет даже полную спецификацию H... весь текст скрыт [показать]
     
     
  • 2.31, xm, 18:46, 22/02/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Да он дофига чего пока не умеет. В отличие от H2O.
     
     
  • 3.32, Аноним, 02:21, 23/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Он и либой быть не умеет И модули програмить очень геморно Так что для нестанд... весь текст скрыт [показать]
     
     
  • 4.33, KonstantinB, 17:59, 23/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    На гитхабе есть зеркало: https://github.com/nginx/nginx

    А патчи в любом случае принимаются только через список рассылки, и это правильно. Если что, форматы патчей в git и hg абсолютно идентичны.

     
  • 1.28, Аноним, 07:06, 22/02/2018 [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Если вам нужно сжатие заголовков для мобильного трафика из протокола HTTP 2 0 - ... весь текст скрыт [показать]
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor