Полностью ли аннулировать кеш HTML5 (манифест)? - PullRequest
1 голос
/ 01 августа 2011

У меня есть веб-приложение для iPhone, и я хочу знать, как принудительно обновить кэш.

Мой манифест кеша такой:

CACHE MANIFEST
index.html
file1.css
file1.js

index.html - это мясоприложения, поэтому я положил это в кеш.На данный момент, я, кажется, костей, так как я не могу понять, как заставить iPhone аннулировать кэш.Даже переход на Settings > Safari > Clear Cache не работает, хотя я хотел бы иметь возможность контролировать это программно.Удаление index.html из манифеста и его повторное добавление, похоже, работает, но я должен знать, что все мои клиенты полностью обновили манифест.

Как мне кэшировать index.html и до сих поробновилось ли оно при изменении?

Ответы [ 3 ]

3 голосов
/ 01 августа 2011

Вне моей головы, любое изменение в манифесте сделает свое дело - и манифесты могут содержать комментарии, начинающиеся с #.Просто добавьте случайный комментарий, и он будет работать.

Это полезное свойство, когда я работал над приложением HTML5 в репозитории git, я использовал автоматическую регенерацию манифеста с комментарием, содержащим хэш HEAD после каждогозафиксировать так, чтобы изменения всегда распространялись на пользователей.

1 голос
/ 19 июля 2012

Кажется, в браузерах WebKit есть ошибка, из-за которой они не могут перезагрузить сайт при внесении изменений в манифест, см. эту ссылку

Не имею понятия об обходном пути, кроме случаев, когда я вызываю index.html напрямую.

У iPad / iPhone-WebApp нет шансов сделать эту работу ...

0 голосов
/ 11 декабря 2015

Да, вы можете использовать JavaScript, чтобы заставить Safari перезагрузить кэшированные файлы ресурсов.

Согласно Apple, изменение файла манифеста кэша приведет к перезагрузке Safari любых измененных файлов ресурсов. Но эти загруженные файлы не будут использоваться браузером, пока пользователь не заходит на сайт во второй раз.Эта задержка может причинить боль, особенно во время разработки.

Чтобы заставить Safari немедленно перезагрузить содержимое кэша, Apple говорит, что может использовать этот JavaScript для манипулирования объектом applicationCache:

function updateSite(event) {
    window.applicationCache.swapCache();
}
window.applicationCache.addEventListener('updateready', updateSite, false);
...