Кэш Google Chrome

#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: без кэша, без хранилища«);