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
答案 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);
}