У меня есть страница, которая загружает много изображений, css и javascript. Я добавил длинный заголовок Expires будущего и назначил Cache-Control публике на эти внешние зависимости, чтобы они были кэшированы. Но каждый раз, когда я делаю Post/Redirect/Get chrome, он пытается загрузить их снова. Такое поведение очень похоже на перезагрузку страницы. Я добавил ETags и обрабатываю заголовок If-None-Match, который немного помогает, но он по-прежнему генерирует слишком много бесполезных запросов.Полная перезагрузка страницы в Post/Redirect/Get ignore управление кешем
Как сообщить хром и сафари, чтобы получить файлы из кеша?
chrome NOK
safari NOK
firefox OK
ie OK
Также см. Full page reload on Post/Redirect/Get ignoring cache control на форуме поддержки 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 часов. Нет Вари: * или что-то в этом роде.
Обновление: Такое поведение является в настоящее время также присутствует в Safari Mobile на прошивкой 4. horible регрессии в скорости загрузки страницы.
Обновление: Существует ошибка об этой проблеме в webkit bugzilla. Bug 38690 - Submitting a POST that leads to a server redirect causes all cached items to redownload
Update: Проблема сохраняется на прошивке 4.0.1
Update: Проблема сохраняется на прошивке 4,1
Update: Проблемы сохраняется на прошивке 4.2
Обновление: Проблемы сохраняется на прошивке 4.2.1 и в Chrome, начиная с версии 6 до 9.
Update: Существует отчет об ошибке по этому вопросу в проекте Chromium.(Вы можете звезда его, чтобы показать вам все равно) Issue 68621: Post/Redirect/Get ignoring cache instructions
Update: Проблема сохраняется в Chrome, начиная с версии 6 до 10. Сейчас это 9 месяцев ошибка.
Обновление: Проблема устранена с 2011-03-21 19:33:07 PST. Это отражено в поведении хрома 12 (канарейка).
Это проблема webkit, а не конкретная проблема с самим Chrome. –
@ Дань, я знаю, но я ожидаю, что ребята из Google исправит это в одном из своих многочисленных релизов. Доступен патч, но он еще не включен в хром. –
Я думал, что патч вызвал регресс, и почему он не был принят? –