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