HTTP/2-серверная рассылка
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
HTTP/2 Server Push является необязательным. [1] особенность HTTP/2 и HTTP/3 сетевых протоколов , которая позволяет серверам отправлять ресурсы клиенту до того, как клиент их запросит. Server Push — это метод повышения производительности, направленный на сокращение задержки за счет упреждающей отправки ресурсов клиенту до того, как он узнает, что они потребуются. [2] На практике Server Push часто приводит к потере пропускной способности, поскольку сервер редко знает, какие ресурсы уже загружены клиентом, и передает один и тот же ресурс несколько раз, что приводит к замедлению работы, если передаваемые ресурсы конкурируют за пропускную способность с запрошенными ресурсами. [3]
HTTP/2 Server Push не является механизмом уведомления от сервера к клиенту. Вместо этого клиент использует отправленные ресурсы, когда в противном случае он все равно мог бы создать запрос на получение ресурса. [4] [5]
История
[ редактировать ]14 мая 2015 года HTTP/2 был стандартизирован RFC 7540 , ратифицированный как предлагаемый стандарт. Документ включает раздел 8.2, озаглавленный «Server Push», в котором эта концепция протокола представлена как необязательное расширение. Google Chrome 40 стал первым браузером, поддерживающим окончательную стандартизированную версию HTTP/2, включая дополнительный Server Push. [6]
В феврале 2018 года был выпущен Nginx 1.13.9 с дополнительной поддержкой HTTP/2 Server Push. [7]
В ноябре 2020 года Google объявила о своем намерении удалить Server Push из реализации Google Chrome HTTP/2 и gQUIC (которые позже превратились в HTTP/3). [8]
В октябре 2022 года Google объявила о своем намерении удалить Server Push из Google Chrome, сославшись на низкую производительность расширения на практике, его неиспользование и лучшие альтернативы. Chrome 106 стал первым выпуском, отключившим Server Push по умолчанию. [9]
Протокол
[ редактировать ]В отличие от HTTP/1.1 , HTTP/2 может мультиплексировать несколько потоков в одном TCP-соединении. Server Push позволяет серверу открывать новые потоки, отправляя кадры PUSH_PROMISE, чтобы отправить клиентские ресурсы, которые, как он ожидает, потребуются. Кадр PUSH_PROMISE аналогичен запросу GET, но отправляется сервером. Клиент может отказаться от отправки, отправив кадр RST_STREAM, например, если ресурс уже кэширован; если это не так, он сохранит отправленные данные в кэше, связанном с соединением, с которым будут обращаться перед отправкой запроса по этому соединению. Клиенты также могут запросить, чтобы серверы не отправляли запросы на сервер, используя кадр SETTINGS. Сама спецификация не определяет, как серверы выбирают, что отправлять: веб-сервер может отправлять push-уведомления клиентам только при их первом посещении, чтобы избежать избыточной отправки кэшированных ресурсов. [10] [11] [12]
Реализации
[ редактировать ]Программное обеспечение | Первая поддерживающая версия | Последняя поддерживающая версия | |
---|---|---|---|
Нгинкс | Сервер | 1.13.9 (февраль 2018 г.) [7] | 1.25.1 (июнь 2023 г.) [13] |
LiteSpeed | Сервер | 5.2 | Все еще поддерживается, но устарел [14] [ нужен лучший источник ] |
Гугл Хром | Клиент | 40 (май 2015 г.) | 106 (сентябрь 2022 г.) [3] [9] [15] |
Firefox | Клиент | ? | Все еще поддерживается [ нужна ссылка ] |
Ссылки
[ редактировать ]- ^ Бельше, М.; Пеон, Р.; Томсон, М. (май 2015 г.). Томсон, М. (ред.). «Протокол передачи гипертекста версии 2 (HTTP/2)» . дои : 10.17487/RFC7540 .
Клиент может запросить отключение отправки с сервера.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Персонал, Арс (18 февраля 2015 г.). «HTTP/2 завершен и появится в браузерах через несколько недель» . Арс Техника . Проверено 12 января 2023 г.
- ^ Перейти обратно: а б «Намерение удалить: HTTP/2 и сервер gQUIC» . Группы Google . 2020-11-11. Архивировано из оригинала 28 ноября 2021 г. Проверено 12 апреля 2022 г.
- ^ «Конфигурации сервера HTTP/2» . HTTP/2 пространство . Архивировано из оригинала 27 марта 2022 г. Проверено 30 марта 2019 г.
- ^ «Серверный пуш» . Протокол передачи гипертекста версии 2 (HTTP/2) . Рабочая группа по интернет-инжинирингу . Май 2015. с. 60. сек. 8.2. дои : 10.17487/RFC7540 . РФК 7540 . Архивировано из оригинала 4 апреля 2022 г. Проверено 6 мая 2015 г.
- ^ «Google объявляет о скором прекращении поддержки SPDY по мере приближения HTTP/2» . Арс Техника . 10 февраля 2015 г. Проверено 30 июля 2023 г.
- ^ Перейти обратно: а б «Изменения в nginx 1.14.2» . Нгинкс . 04.12.2018. Архивировано из оригинала 7 апреля 2022 г.
- ^ Лесси, Брэд (12 ноября 2020 г.). «Намерение удалить: HTTP/2 и сервер gQUIC» . Мигающий список рассылки . Проверено 20 ноября 2023 г.
- ^ Перейти обратно: а б «Удаление HTTP/2 Server Push из Chrome» . Разработчики Chrome . 18 августа 2022 г. Проверено 30 июля 2023 г.
- ^ «HTTP/1.1 против HTTP/2: в чем разница?» . Цифровой Океан . 17 марта 2022 г. Проверено 20 ноября 2023 г.
- ^ «Представляем HTTP/2 Server Push с NGINX 1.13.9» . Нгинкс . 20 февраля 2018 г. Проверено 20 ноября 2023 г.
- ^ «Объявление о поддержке HTTP/2 Server Push» . 28 апреля 2016 г. Проверено 20 ноября 2023 г.
- ^ «Изменения в nginx 1.25.1» . Нгинкс . 13 июня 2023 г. Проверено 12 июля 2023 г.
- ^ «Оптимизация страницы» . Документация LiteSpeed . Проверено 21 июля 2023 г.
- ^ «Удалить HTTP/2 push» . chromestatus.com . 31 октября 2022 г. Проверено 12 июля 2023 г.