Можно ли сделать очистку кеша с помощью HTTP/2?

Кто-нибудь пробовал?

Вот пример использования. В первом цикле запрос-ответ это произойдет:

Запрос 1:

GET / HTTP/1.1
...

Ответ 1

HTTP/1.0 200 OK
Etag: version1
Cache-control: max-age=1

... angly html here
....<link href="mycss.css" >
...

Запрос 2:

GET /mycss.css HTTP/1.1
...

Ответ 2 (вероятно, толкнул):

Etag: version1
Cache-control: max-age=<duration-of-the-universe>

...
... brackety css ...
...

и затем, когда браузеры во второй раз переходят на одну и ту же страницу, они, конечно, снова извлекают ресурс "/" из-за очень короткого max-age:

GET / HTTP/1.1
...
If-not-modified: version1

Но он не получит mycss.css, если он будет в кеше. Однако сервер может использовать валидатор, присутствующий в заголовке "если не изменено" запроса "/", чтобы получить представление о возрасте кэша клиента, и может сделать вывод, что версия браузера mycss.css слишком старая, В этом случае, прежде чем даже ответить на предыдущий запрос, сервер может "пообещать" новую версию mycss.css/

По спецификации, должен ли браузер принимать и использовать его?

1 ответ

Обзор:

Я до сих пор не знаю, что ответ на мой вопрос с чисто теоретической стороны, но, по крайней мере, сегодня на практике кажется невозможным выполнить очистку кэша таким образом:-(, ни с Google Chrome, ни с Firefox. Оба отклонить или проигнорировать выдвинутый поток, если они считают, что ресурс, который они имеют в кэше, является новым.

Я также получил это от кого-то, кто предпочитает оставаться анонимным:

Браузеры обычно помещают ресурсы, полученные посредством push, в "демилитаризованную зону", и только после того, как клиент запросит этот ресурс, он будет перемещен в фактический кеш. Так что простое нажатие случайных вещей не приведет к тому, что они попадут в кеш браузера, даже если браузер примет их в момент нажатия.

Обновить

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

Другие вопросы по тегам