2012-02-07 2 views
5

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

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

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

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

В 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, так что это именно то, что получает браузер.

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

Благодаря

Mog

+0

Вы когда-нибудь диагностировали причину или находили решение этой проблемы? Мы видим повторяющиеся условные запросы GET на каждом изображении в Mac OS X 10.8.2 с браузерами на основе webkit (Chrome/Safari), но Firefox кэширует правильно. –

+0

Фактически мы удаляем атрибут last-modified для Chrome и Safari, чтобы он, по крайней мере, делал некоторые кеширования. Никогда не находил лучшего решения извините. – Mog0

ответ

0

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

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

Смежные вопросы