Кэш приложений HTML5 удаляется программно

Есть ли возможность удалить кэш приложений HTML5 с помощью javascript?

Доступны варианты удаления/отключения кэша приложений:

  1. Обновите файл манифеста с пустым содержимым — существующий кэш приложений доступен без каких-либо ресурсов
  2. Включите фиктивный URL-адрес в существующий файл манифеста — он выдаст 404 для нового кеша приложения. Но старый appcache не полностью удаляется из движка браузера.
  3. Удалить из консоли разработчика Chrome — если мы хотим удалить вручную.

Но Мое требование состоит в том, чтобы программно удалить appcache с помощью javascript на основе уведомления с сервера. Есть ли возможность реализовать эту функциональность???


person Srini    schedule 05.05.2015    source источник


Ответы (2)


Возможно, это могло бы сработать. При загрузке страницы с сервера передайте флаг, указывающий, хотите ли вы, чтобы атрибут манифеста был включен в страницу. Если вы визуализируете html на сервере, передайте этот флаг любому механизму шаблонов, который вы используете. В противном случае верните другую html-страницу на основе значения этого флага, который просто не включает атрибут manifest.

Когда вы получите уведомление с сервера, обновите эту страницу с помощью ?includeAppCache=false.

Если это не то, что вы ищете, возможно, я неправильно понимаю ваши требования? Насколько я понимаю ваш вопрос, клиент получит уведомление от сервера, указывающее, что клиент больше не должен использовать appcache, верно?

Возможно, то, что вы ищете, можно сделать с помощью событий appcache или другой конфигурации вашего файла манифеста, используя раздел fallback или подстановочный знак сети, например:

NETWORK:
*

Я считаю этим отличным ресурсом.

person Mike Nitchie    schedule 15.06.2015
comment
Поскольку это требование относится к одностраничному приложению, перезагрузка всей страницы для удаления кэша приложений невозможна. Если я нажимаю на какую-либо службу, на основе ответа сервера необходимо очистить кеш приложения с помощью javascript без перезагрузки страницы. - person Srini; 15.06.2015

Я нашел решение, используя событие Obsolete в AppCache API.

Загрузка Appcache только с обновлением версии:

Когда версия appcache будет изменена, начнут загружаться новые файлы. До этого времени приложение не ждет, чтобы заблокировать запуск приложения. Он работает с использованием существующих кэшированных файлов (CSS, JS и файлов действий). Но вновь загруженные статические файлы (CSS, JS) будут выполняться только при перезапуске.

Загрузка Appcache с устаревшим событием:

Вместо обновления версии appcache мы можем создавать новые файлы appcache, и такая же ссылка была добавлена ​​в файл HTML. Всякий раз, когда статус файла appcache становится равным 404 или 410, он возвращает устаревшее событие. В этом случае, если мы перезапустим приложение, новые кэшированные файлы будут загружаться параллельно, и приложение будет работать с загрузкой новых файлов из сети вместо загрузки из старого кэша.

person Srini    schedule 07.09.2015