2012-08-05 95 views
11

我经常遇到这个问题,其中一些用户有一个损坏的应用程序缓存(HTML 5)。通过javascript清除并更新html5应用程序缓存

每次有新版本时,我都会更新清单文件,有时甚至有些用户得到损坏的应用程序缓存。

我这样的情况下,我想完全清楚还有什么在他们的应用程序缓存和负载从服务器上所有新鲜的内容。

有没有办法使用JavaScript?

+0

你看过这篇文章吗? http://stackoverflow.com/questions/1011605/clear-the-cache-in-javascript或这一个:http://stackoverflow.com/questions/8155064/how-to-programmatically-empty-browser-cache – 2012-08-05 15:20:03

+0

所以我们无法更新HTML 5版本的应用程序缓存? – Tushar 2012-08-05 15:22:44

+0

请参阅下面 – 2012-08-05 15:27:44

回答

13

据对

http://www.w3schools.com/html5/html5_app_cache.asp

上有至极的应用程序缓存将被重置三种方式下面的文章,它们是:

  1. 用户清除浏览器缓存
  2. 清单文件被修改
  3. 应用程序缓存以编程方式更新

更多有关编程更新应用程序缓存可以在这里找到:

http://www.html5rocks.com/en/tutorials/appcache/beginner/

它看起来是这样的:

var appCache = window.applicationCache; 

appCache.update(); //this will attempt to update the users cache and changes the application cache status to 'UPDATEREADY'. 

if (appCache.status == window.applicationCache.UPDATEREADY) { 
    appCache.swapCache(); //replaces the old cache with the new one. 
} 
+8

我的回答不要使用W3Schools的作为参考...... [w3fools](http://w3fools.com) – Andreas 2012-08-05 15:38:27

+0

我仍然面临着同样的问题,我想是因为清单文件,有效地没有改变。因此存储的内容不会被更新。只有清单文件被重新获取。 – Tushar 2012-08-05 15:43:24

+2

@Andreas他们只是提供这些信息的许多网站之一,并且它是正确的。这可能是你的问题,如果你不适用于上述条件之一,缓存将不会被清除。 – 2012-08-05 15:46:31

7

这一个是很老,但我看到了错误的答案被投票赞成,我觉得喜欢提供一些提示....

如果有人有麻烦的话根据规范,您可以看到代码无法强制浏览器重新加载缓存,除非清单中有更改,并且“appCache.status == window.applicationCache.UPDATEREADY”为true。

看看这里http://www.w3.org/TR/2011/WD-html5-20110525/offline.html

“UPDATEREADY清单中列出的资源已被新重新下载,脚本可以使用swapCache()切换到新的高速缓存。”

所以,仔细阅读它,你会发现applicationCache到达该状态时,其中刚刚下载的资源...这是...发生了先前的“下载”事件......和以前的那一个一个“检查“....

相关问题