完全使HTML5缓存(清单)无效?

时间:2011-07-31 20:40:58

标签: iphone html5 caching manifest local-storage

我有一个iPhone网络应用程序,我想知道如何强制缓存刷新。

我的缓存清单是:

CACHE MANIFEST
index.html
file1.css
file1.js

index.html是应用程序的核心,所以我把它放在缓存中。在这一点上,我似乎很难受,因为我无法弄清楚如何让iPhone无效缓存。即使转到Settings > Safari > Clear Cache也行不通,尽管我希望能够以编程方式控制它。从清单中删除index.html并重新添加它似乎可行,但我必须知道我的所有客户都清理了更新后的清单。

如何缓存index.html并在更改时仍然更新?

3 个答案:

答案 0 :(得分:3)

在我的头顶,对清单的任何更改都可以解决问题 - 清单可以包含以#开头的注释。只需添加随机评论即可。

这是一个有用的属性,当我在git存储库中处理HTML5应用程序时,我曾经在每次提交后使用包含HEAD哈希的注释自动重新生成清单,以便更改始终传播给用户。

答案 1 :(得分:1)

WebKit浏览器中似乎存在一个错误,阻止他们在清单更改时重新加载网站,请参阅this link

除非直接调用index.html,否则无法解决变通方法。

没有机会将iPad / iPhone-WebApp固定在这个工作上......

答案 2 :(得分:0)

是的,您可以使用JavaScript强制Safari重新加载缓存的资源文件。

根据Apple的说法,修改缓存清单文件将导致Safari重新加载任何已更改的资源文件。 在用户第二次访问该网站之前,浏览器不会使用这些重新加载的文件。这种延迟可能会带来痛苦,尤其是在发展过程中。

为了强制Safari立即重新加载缓存内容,Apple称你can use this JavaScript操纵applicationCache对象:

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