2014-06-26 19 views
2

ApplicationCache將不緩存任何
的index.html無法執行對 'ApplicationCache' 更新':沒有應用程序緩存更新

<!DOCTYPE html> 
<html manifest="cache.appcache"> 
<head> 
<title>Zipcode Database</title> 

文件cache.appcache

CACHE MANIFEST 
my.js 

htacces file

AddType text/cache-manifest .appcache 

當控制檯我運行

applicationCache.update(); 

然後錯誤: InvalidStateError:無法執行對 'ApplicationCache' 更新':沒有應用程序緩存進行更新。 代碼:11 message:「'ApplicationCache'上執行'update'失敗:沒有應用程序緩存來更新。」 名稱: 「InvalidStateError」 棧:「錯誤:未能執行的 'ApplicationCache' 更新':沒有應用程序緩存到update.↵

而且applicationCache.cache =0

+1

這是否解決?我的答案有任何更新? –

+0

非常感謝! –

+0

歡迎:) –

回答

1

cache.appcache看起來無效,它應該是這樣的:

CACHE MANIFEST 
#v0.0.1 change this to force update 

CACHE: 
./my.js 

,如果它仍然沒有在這之後的工作,你能提供給我一個完整的HTML,所以我可以測試它更

+0

對於未來的downvoters /問題尋求者:布魯諾是正確的,也許TS有他的'my.js'鏈接錯誤,並與我的答案確實鏈接正確。 –

9

馬? nifest非常好,不同的部分純粹是可選的。

如果狀態爲0,則表示瀏覽器從未成功下載過清單及其所有內容。所以,如果你想手動運行applicationCache.update()方法,確保有一個緩存的一切,它沒有目前正在更新,如

status == 1 || status > 3

更多信息請參見http://www.html5rocks.com/en/tutorials/appcache/beginner/

+1

爲什麼排除狀態== 2(applicationCache.CHECKING)? –

+0

status == 2是CHECKING,這意味着可能沒有緩存,所以你不想交換它。 –

0

我今天在Chrome瀏覽器中看到了這個錯誤。我的應用程序中啓用了App Cache和Service Worker。所以當你禁用服務人員時,它按預期工作。但是,當你有兩個,觸發更新緩存事件,但applicationCache.swapCache();拋出錯誤。

這樣的解決方法是有條件地添加監聽

if (!('serviceWorker' in navigator)) { 
    function updateSite(event) { 
     window.applicationCache.swapCache(); 

     if (confirm("New App Version Was Downloaded. Update now?")) { 
      window.location.reload(); 
     } 
    } 

    window.applicationCache.addEventListener('updateready', updateSite, false); 
}