Как очистить кэш приложения (функция HTML5) с помощью JavaScript? - PullRequest
5 голосов
/ 29 апреля 2011

Наше веб-приложение использует кэш приложения (манифест кэша) для восстановления HTML-страницы и ресурсов в автономном режиме. HTML-страницы имеют сессионные идентификаторы в качестве параметров в URI. Таким образом, после каждого выхода из системы и входа в систему новые HTML-страницы сохраняются в кеше приложения, так как sessionId был изменен в URI. После нескольких недель работы с приложением некоторые браузеры начинают работать медленнее. А размер кеша приложений (протестирован на FF 3.6+) составляет около 200 Мб! После каждого выхода мы очищаем LocalStorage браузера, но как очистить ресурсы из хранилища приложений?

Ответы [ 2 ]

7 голосов
/ 29 апреля 2011

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

Таким образом, добавляя идентификатор сеанса в URI манифеста кеша, вы сообщаете браузеру, что каждый сеанс получает свое собственное совершенно новое приложение, не используя ранее загруженные (и, следовательно, никогда не сможет их очистить).).Каждый раз вы устанавливаете другое веб-приложение.

Пересмотрите, как вы проектируете свое приложение, поскольку в настоящее время использование манифеста автономного кэша HTML5 обеспечивает значение no - просто вызывает чрезмерную загрузку.Архитектура, которую поощряют веб-приложения, статически обслуживает весь HTML и извлекает данные, для которых требуются сеансы, через AJAX.Веб-приложения не работают при построении в классической парадигме «динамически генерировать HTML-страницу с данными на сервере».

0 голосов
/ 29 апреля 2011

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

...