Почему мне нужно использовать URL-снятие отпечатков с заголовков с истекшим сроком годности для статических ресурсов? - PullRequest
1 голос
/ 20 ноября 2011

Все, что я прочитал о заголовках «expires» (http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/, например), указывает на то, что при использовании преимуществ кэширования таким образом, вам необходимо «дактилоскопировать» имена файлов, чтобы при изменении статических ресурсов браузер перестал использовать версию из кэша и вместо этого извлеките новую.

Однако в моих тестах с IIS7 в качестве внутреннего веб-сервера и с использованием браузеров IE 7, FF и Chrome мне это не требовалось. Если я изменил файл на веб-сервере - что-то вроде «myfile.js», то веб-сервер отправил заголовок «последней модификации» в качестве даты изменения этого файла, и все браузеры заметили это изменение. Они вернули 200 для первого запроса после изменения файла, и последующие запросы, казалось, извлекали из кэша.

Конечно, я что-то упускаю, но я не знаю, что это. Пожалуйста, просветите меня.

Ответы [ 2 ]

3 голосов
/ 22 ноября 2011

Ваше тестирование некорректно. Скорее всего, вы нажимаете кнопку «Перезагрузить», но пользователи обычно не загружают ваш сайт - вместо этого они нажимают на ссылку, нажимают на закладку, вводят URL и т. Д. Некоторые люди нажимают кнопку «перезагрузить», но это очень маленький процент. ,

Когда вы нажимаете Обновить, вы заставляете браузер отправлять запрос If-Modified-Since. Если вместо этого у вас есть дата истечения срока давности в будущем, и вы загружаете страницу обычным способом, вы увидите, что браузер не выполняет HTTP-запрос для этого ресурса - и это хорошо!

См. Этот блог для получения дополнительной информации (пункт 4): http://www.stevesouders.com/blog/2011/06/27/unexpected-reloads-in-webkit/

1 голос
/ 20 ноября 2011

Современные браузеры по-прежнему будут пытаться получить любой запрошенный URL-адрес с сервера, но включают в запрос метку времени If-Modified-Since.Сервер может использовать это, чтобы определить, должен ли он отправить обратно 200 OK и содержимое запрошенного URL-адреса, или ответ 304 Not Modifed, чтобы указать, что браузер должен использовать кэшированную версию.

В основном заголовок expiresпросто говорит браузеру «после этого момента вы ДОЛЖНЫ удалить свою кэшированную версию и получить новую копию».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...