Полная перезагрузка страницы в Post / Redirect / Get игнорирует управление кэшем
У меня есть страница, которая загружает много изображений, CSS и JavaScript. Я добавил заголовок Expires далекого будущего и установил для Cache-Control значение public для этих внешних зависимостей, чтобы их можно было кэшировать. Но каждый раз, когда я делаю Post / Redirect / Get Chrome, пытается загрузить их снова. Это поведение очень похоже на перезагрузку страницы. Я добавил ETag и обработал заголовок If-None-Match, который немного помогает, но он по-прежнему генерирует слишком много бесполезных запросов.
Как мне сказать chrome и safari, чтобы получить файлы из кеша?
chrome NOK
safari NOK
firefox OK
ie OK
Также смПолная перезагрузка страницы в Post / Redirect / Get игнорирует управление кэшем на форуме поддержки Google.
Разъяснение:
Я не хочу, чтобы браузер запрашивалimage1.png
дважды. Это должно быть кэшировано.
200 GET page1.html
200 GET image1.png (Cache-Control: public, Expires and ETag)
302 POST action.asp (form submitted from page1.html, redirects)
200 GET page2.html
304 GET image1.png (If-None-Match)
Пример:
Я создал простой пример, чтобы проиллюстрировать проблему.
Заголовки:
Заголовки, которые я отправляю с изображением:
HTTP/1.1 200 OK
Date: Fri, 18 Jun 2010 11:30:22 GMT
Server: Apache
Cache-Control: public, max-age=86400
Expires: Sat, 19 Jun 2010 11:30:24 GMT
Etag: "123"
Content-Length: 866
Content-Type: image/png
Что должно сделать его кэшированным на 24 часа. Там нет Vary: * или что-нибудь в этом роде.
Обновить: Это поведение теперь также присутствует в Safari Mobile на iOS 4. Огромный регресс в скорости загрузки страницы.
Обновить: Об этой проблеме есть в багзилле webkit.Ошибка 38690 - Отправка сообщения POST, которое приводит к перенаправлению сервера, приводит к повторной загрузке всех кэшированных элементов
Обновить: Проблема сохраняется на iOS 4.0.1
Обновить: Проблема сохраняется на iOS 4.1
Обновить: Проблема сохраняется на iOS 4.2
Обновить: Проблема сохраняется на iOS 4.2.1 и в Chrome с версии 6 до 9.
Обновить: Существует сообщение об этой проблеме в проекте Chromium. (Вы можете пометить это, чтобы показать свою заботу)Проблема 68621: публикация / перенаправление / получение игнорирующих инструкций кэша
Обновить: Проблема сохраняется в Chrome с версии 6 до 10. Сейчас это ошибка 9 месяцев.
Обновить: Проблема исправлена по состоянию на 2011-03-21 19:33:07 PST. Это отражается на поведении хрома 12 (канарейка).