Webkit не кешируется, если указаны заголовки max-age и Last-Modified - PullRequest
5 голосов
/ 07 февраля 2012

У меня написано веб-приложение с настраиваемым веб-сервером, и у меня возникают проблемы с браузерами webkit, которые не кэшируют изображения, таблицы стилей и javascript.

Я проследил это до некоторой связи между Cache-Контроль: максимальный возраст и последняя модификация.Если оба указаны, то webkit, похоже, игнорирует заголовок max-age и проверяет, был ли файл изменен КАЖДЫЙ раз, когда используется ресурс.У сайта есть iframe на первой странице, и это приводит к тому, что таблицы стилей и т. Д. Запрашиваются дважды в течение секунды!

Если вы удалите Last-Modified, то файлы не будут повторно запрашиваться до следующего дня.;однако запросы на следующий день больше не будут запросами if-Modified-Since, требующими от сервера повторной отправки всего, а не только заголовка 304.

В IE9, Firefox 10.0 и Opera 11.61 браузеры кешируются правильно и не работаютНе запрашивайте изображения, только HTML, который имеет атрибут заголовка Cache-Control: no-cache.

В Chrome 16.0.912.77 m и Safari 5.1.2 (7534.52.7) условный запроссделано для каждого изображения на каждой странице, каждый раз.Сервер отвечает заголовком 304, снова содержащим атрибут max-age, но оба продолжают запрашивать.

Пример HTTP-заголовка, который я отправляю с ответом:

HTTP/1.1 200 OK
Date: Mon, 06 Feb 2012 15:12:12 GMT
Cache-Control: max-age=86400
Content-length: 708
Content-type: image/gif
Last-Modified: Fri, 6 Jan 2012 14:39:07 GMT
Server: Webspring

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

Все браузеры работают на Win7 Pro x64, а приведенный выше заголовок HTTP является необработанным выводом Fiddler, так что это именно то, чтобраузер получает.

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

Спасибо

Мог

1 Ответ

0 голосов
/ 17 июля 2012

У меня была такая же проблема, но она не была широко распространена; Safari и Chrome в режиме инкогнито работают нормально. Я попытался отключить все расширения, которые не имели значения, но очистка всего кэша, похоже, исправила это.

Я предполагаю, что если вы впервые добавляете заголовок Cache-Control на свой сайт, то Chrome неправильно перезаписывает старые заголовки в своем кеше. Это создает некоторые проблемы с правильной настройкой существующих пользователей на новые настройки кэша.

...