Удаление манифеста HTML5 Appcache, навсегда - PullRequest
9 голосов
/ 11 января 2012

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

Я прочитал, что передача измененного файла манифеста, полностью пустого, с правильным MIMETYPE удалит кеш. Редактировать: см. Ниже.Ответ Мориса - единственное последовательное исправление.

Это самое быстрое и эффективное решение?Есть ли лучший способ?

И если вы можете указать своим ответом, действительно ли вы использовали эту функцию ранее, я был бы очень признателен - неоднозначная документация и изворотливость, которые не были показаны во время тестирования,что привело меня в эту ситуацию.

Ответы [ 4 ]

17 голосов
/ 11 января 2012

Хитрость заключается в том, чтобы сначала изменить URL-адрес манифеста на вашей HTML-странице на что-то недопустимое, чтобы браузер получал 404 при загрузке. Не забудьте также изменить исходный манифест, иначе новая HTML-страница никогда не загружается. После того как браузеру не удалось загрузить новый URL-адрес манифеста, вы можете полностью удалить настройку манифеста со страницы HTML.

Довольно странно, но, похоже, это единственный надежный способ удалить существующую ссылку на манифест.

7 голосов
/ 27 июня 2015

По состоянию на 25.06.2015 я обнаружил, что возврат 404 не очистит существующий appcache для Firefox, а возврат пустого appcache не очистит существующий appcache для Chrome. Возвращение следующего appcache, похоже, работало в IE, Chrome, Safari и Firefox, хотя неясно, по какому механизму выполняется отключение «неявного» кэширования index.html.

NETWORK:
*

CACHE:
FALLBACK:
2 голосов
/ 27 февраля 2014

Если вы просто хотите, чтобы он был удален с вашей стороны, вы можете сделать это из браузера. Я могу только вспомнить, как это сделать в Chrome. Перейдите в chrome: // appcache-internals / и удалите нужные файлы. Вы также можете очистить кэш и куки, и это должно работать. Однако я проверяю это только в Chrome.

Если вы хотите удалить его для всех зрителей, я не знаю способа определить, есть ли у них старая кэшированная версия, но я знаю, что сохранение атрибута с ложной ссылкой, как предложил Морис, было бы единственным способом Я бы знал; хотя я уверен, что есть и другой способ, скорее всего, с jQuery.

2 голосов
/ 03 июля 2013

У меня была похожая проблема, когда мне нужно было сбросить кэш приложения после неудачного обновления (то есть принудительно полностью удалить кэш приложения, чтобы его можно было восстановить с нуля).

Сборкана ответ Мориса я предоставляю пользователю обычно скрытую ссылку, которая открывает некэшированную страницу, которая просто пишет куки и возвращает пользователя к предыдущему виду.Этот файл cookie указывает серверу вернуть 404 в следующий раз, когда запрашивается appcache, и пользователь проходит через обычный процесс входа в систему.Когда приложение в следующий раз успешно запускается, оно очищает cookie и возобновляет кэширование в обычном режиме.

Использование cookie таким образом позволяет обойти проблемы, из-за которых основная версия представления застревает в кэше приложения, что затрудняет внедрениевзлом URL-адреса в manifest = "", т.е. URL-адрес манифеста остается прежним, но сервер отвечает 404, пока не будет указано иное.

...