HTTP / 2 Server Push, когда клиент отрицает это или не поддерживает

Так что мне интересно, следует ли включить Server Push или нет.

Я знаю, что HTTP / 2 обновляется с HTTP / 1, что означает, что любой клиент, который не поддерживает HTTP / 2, вернется к HTTP / 1 и продолжит работу в обычном режиме.

Но что происходит, когда клиент поддерживает HTTP / 2, но не t поддерживает Server Push или активно отклоняет / ограничивает запросы Push?

Боюсь, что из-за этого некоторые ресурсы могут не передаваться клиенту. Следует ли мне готовиться к такому повороту событий или это не проблема?

0
задан 7 September 2017 в 13:33
1 ответ

Клиент укажет, что для него не включена принудительная передача, установив для параметра SETTINGS_ENABLE_PUSH значение 0 во время установки соединения HTTP / 2.

Из спецификации HTTP / 2 :

PUSH_PROMISE НЕ ДОЛЖЕН отправляться, если параметр SETTINGS_ENABLE_PUSH для равноправная конечная точка установлена ​​в 0. Конечная точка, которая установила этот параметр и получил подтверждение ДОЛЖЕН относиться к получению Кадр PUSH_PROMISE как ошибка соединения (раздел 5.4.1) типа PROTOCOL_ERROR.

Но HTTP / 2 Push может быть легко использован владельцами сайтов, если они чрезмерно проталкивают ресурсы, которые могут не понадобиться клиенту или которые уже кэшированы. Клиенты могут сбросить поток, чтобы указать, что им не нужен продвинутый ресурс, но это не очень хорошо, поскольку это все еще дополнительная работа и для клиента, и для сервера.

Существуют различные методы, которые владельцы веб-сайтов должны использовать, чтобы гарантировать, что они отправляют только соответствующий контент. Я подробно описываю один такой простой метод в этом сообщении в блоге: https://www.tunetheweb.com/performance/http2/http2-push/ . Рабочая группа HTTP работает над дайджестами кэша , которые должны в конечном итоге формализовать метод выполнения этого, но в настоящее время он все еще определяется.

2
ответ дан 4 December 2019 в 13:30

Теги

Похожие вопросы