#google-chrome #browser-cache
#google-chrome #кэш браузера
Вопрос:
У меня есть HTML-страница, в которую встроено приложение flash (flex).
У меня есть следующие заголовки:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-STORE">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
Кроме того, каждый раз, когда я выпускаю новую версию приложения, я меняю имя файла. Таким образом, он становится чем-то вроде MyApp_v1.swf, который затем обновляется до MyApp_v2.swf.
Несмотря на это, Chrome по-прежнему кэширует HTML-страницу и swf-файл. Это серьезная проблема, поскольку клиенты не видят обновленный swf-файл, пока не очистят кэш своего браузера.
Я даже пытался обойти это, изменив файл htaccess и переименовав index.html файл, в котором размещен swf-файл:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://www.mysite.com/app[R,L]
DirectoryIndex index.html #this was changed from myapp.html
Даже после этого Chrome по-прежнему кэширует swf-файл и продолжает считывать данные из старого HTML-файла. Я просматриваю исходный код в html, и он все еще показывает старый файл.
Все это прекрасно работает в любом другом браузере.
Ответ №1:
Эти два сообщения об ошибках касаются, здесь приведена некоторая полезная информация:
Проблема 28035 — chromium — Cache не поддерживает никаких параметров кэша (google crome)
Проблема 64139 — chromium — Cache не проходит повторную проверку должным образом, директива no-cache
Другим решением может быть добавление определенных cache-control
или pragma
HTTP-заголовков, как указано в ссылках выше
Кроме того, глупый вопрос, вы очищали кеш Chrome перед тестированием своих <meta>
тегов без кеширования? интересно, все ли еще используется кэш, который был до ваших изменений.
Комментарии:
1. К сожалению, это не полное решение, поскольку я не могу сказать всем своим клиентам очистить свой кеш. По сути, они навсегда застряли на нейтральной полосе с неверной страницей навсегда! Я предполагаю, что еще один вариант — переместить все приложение в новый каталог на сервере и использовать перенаправление .htaccess. Это должно вызвать надлежащее обновление и переопределить кэш браузера, верно?
2. если вы добавите параметр запроса в ссылку любого атрибута src или href, например src=»mipaht.jpg?ver=1″, это заставит браузер обновить исходный код, работает для javascript, изображений, css, так что, возможно, в этом случае также будет работать…
3. и если вы используете динамическую строку, например datetime, вы можете быть уверены, что пользователи всегда загружают новую версию и никогда не кэшируют. пример:
src="myfile.swf?ver=1407279708
Ответ №2:
Для всех вас, ребята, кто борется с этим
я нашел кое-что простое, что работает…
я пытался
1. ctrl f5
2. ctrl shift 5
3. установка параметра «нет кэша» в инструментах разработчика..
Что сработало для меня в итоге, так это
Просто удерживайте клавишу CTRL, пока нажимаете значок перезагрузки!
Комментарии:
1. Это не решение. Если на странице указано «no-cache», вам не нужно заставлять ее вручную соблюдать директиву. Кроме того, это будет работать с указанным значением no-cache или без него.
2. Может быть, это и не решение, но, несомненно, было удобно.
Ответ №3:
Используйте этот дополнительный тег «без хранилища», и кэш будет отлично работать в Chromium (Хроме), как и в других совместимых браузерах:
заголовок(«Cache-Control: нет кэша, нет хранилища, требуется повторная проверка»);
заголовок(«Pragma: без кэша, без хранилища«);