Как работает ли сервер HTTP / 2 с клиентом, не нуждающимся в ресурсе?

Я читал о HTTP / 2, и идея вытеснения сервером ресурсов клиенту с упреждением кажется хорошей. Но что, если клиенту это не нужно, потому что клиент уже кэшировал его с последнего посещения?

Похоже, существует RST_STREAM , который позволяет клиенту немедленно завершить поток. Но что произойдет, если сервер слишком быстрый и уже отправил его? Эффективно ли RST_STREAM сигнализировать серверу об уже кэшированных файлах?

0
задан 30 March 2017 в 20:49
1 ответ

Да, в этом суть RST_STREAM.

Вы правы, что это увеличивает риск того, что произойдет слишком поздно, для обоих:

  • Сервер - который потратит впустую время на выборку ресурса к моменту получения сообщения RST_STREAM .

  • Клиент - поскольку часть / большая часть / весь ресурс мог быть отправлен к тому времени, когда клиент понял, что в этом нет необходимости, и отправил поток сброса. Это тратит время и ресурсы (в частности, пропускную способность на мобильных устройствах, например!).

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

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

Лично я думаю, что Server Push - одна из самых интересных частей HTTP / 2, которая займет некоторое время, как использовать по назначению, и может привести ко всем видам интересных приложений. Точно так же, как некоторые методы хвастовства производительностью (например, конкатенация, спрайт и т. Д.) В HTTP / 1.1 потребовали времени и некоторых экспериментов, чтобы помочь продвинуть то, что может делать протокол - хотя интересно, что все они теперь стали анти- шаблоны под HTTP / 2 . Возможно, в будущем, когда появится HTTP / 3, некоторые из методов push-уведомлений сервера станут такими же!

1
ответ дан 4 December 2019 в 16:18

Теги

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