HTTP/2 Server Push, когда клиент это отрицает или не поддерживает
Поэтому мне интересно, включить или нет Server Push.
Я знаю, что HTTP/2 обновляется с HTTP/1, что означает, что любой клиент, который не поддерживает HTTP/2, вернется к HTTP/1 и будет работать как обычно.
Но что происходит, когда клиент поддерживает HTTP/2, но не поддерживает Server Push или активно запрещает / ограничивает Push-запросы?
Я боюсь, что некоторые ресурсы не могут быть переданы клиенту из-за этого. Должен ли я подготовиться к этой возможности или это не проблема?
1 ответ
Клиент будет указывать, что он не активирован нажатием, установив SETTINGS_ENABLE_PUSH в 0 во время установки соединения 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 работает над дайджестами кэша, которые в конечном итоге должны формализовать метод выполнения этого, но в настоящее время он еще не определен.