无法在'ApplicationCache'上执行'update':没有要更新的应用程序缓存

时间:2014-06-26 10:01:53

标签: javascript caching

ApplicationCache不会缓存任何内容 index.html

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

文件 cache.appcache

CACHE MANIFEST
my.js

htacces 文件

AddType text/cache-manifest .appcache

在控制台中我运行

applicationCache.update(); 

然后错误:   InvalidStateError:无法执行&#39;更新&#39; on&#39; ApplicationCache&#39;:没有要更新的应用程序缓存。 代码:11 消息:&#34;无法执行&#39;更新&#39;在&#39; ApplicationCache&#39;:没有要更新的应用程序缓存。&#34; name:&#34; InvalidStateError&#34; stack:&#34;错误:无法执行&#39;更新&#39;在&#39; ApplicationCache&#39;:没有要更新的应用程序缓存.↵

applicationCache.cache =0

3 个答案:

答案 0 :(得分:9)

清单非常好,不同的部分是纯粹可选的。

如果状态为0,则表示浏览器从未成功下载清单及其所有内容。因此,如果您想手动运行applicationCache.update()方法,请确保根本没有缓存,并且目前尚未更新,例如

status == 1 || status > 3

有关详细信息,请参阅http://www.html5rocks.com/en/tutorials/appcache/beginner/

答案 1 :(得分:1)

您的cache.appcache看起来无效,它应该如下所示:

CACHE MANIFEST
#v0.0.1 change this to force update

CACHE:
./my.js

如果在此之后仍无法正常工作,您能为我提供完整的HTML,以便我可以对其进行更多测试吗?

答案 2 :(得分: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);
}