Как заставить браузеры не запрашивать ресурс при обновлении? - PullRequest
1 голос
/ 22 декабря 2010

Я пытаюсь заставить браузер кэшировать различные ресурсы, такие как CSS, изображения, js и т. Д. навсегда .Для браузера важно никогда не пытаться обновить images / css, так как на странице могут быть тысячи маленьких изображений, и когда браузер пытается обновить, он бомбардирует сервер и без необходимости удерживает страницу в режиме обновления.Изображения / CSS никогда не меняются, если не изменен путь запроса.

Прямо сейчас у меня есть путь к изображениям / CSS, установленный для скрипта с URL-адресом вроде:

"http://example.com/img/get.php?n=someimage.jpg&v=7"

и сценарияотправляет эти заголовки перед отправкой ресурса:

header("Cache-Control: public");
header("Expires: Tue, 19 Jan 2037 00:00:00 GMT");
header("Last-Modified: Sat, 01 Jan 2000 00:00:00 GMT");

Однако Chrome и Firefox повторно запрашивают изображение / CSS, если нажата кнопка Обновить.Chrome также отправляет запрос, если вы нажмете Enter в адресной строке, в отличие от Firefox.

Мой вопрос заключается в том, почему они делают это, так как заголовок Expires должен заставить его не выполнять запрос снова до 2037 года, даже еслипользователи нажимают Обновить.Я что-то делаю не так или что-то упустил?

1 Ответ

4 голосов
/ 22 декабря 2010

Вы не можете. Как вы заметили, в некоторых браузерах определение «обновить» означает «обновлять и обновлять кэш».

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

...