2012-08-05 100 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到達該狀態時,其中剛剛下載的資源...這是...發生了先前的「下載」事件......和以前的那一個一個「檢查「....

相關問題