update'执行失败on 'ApplicationCache':没有应用程序缓存要更新

Failed to execute 'update' on 'ApplicationCache': there is no application cache to update

本文关键字:应用程序 缓存 更新 ApplicationCache 执行 失败 on update      更新时间:2023-09-26

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

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

文件缓存。appcache

CACHE MANIFEST
my.js

htacces 文件

AddType text/cache-manifest .appcache

在控制台中运行

applicationCache.update(); 

then error:InvalidStateError: Failed to execute 'update' on 'ApplicationCache':没有应用程序缓存要更新。代码:11消息:"在'ApplicationCache'上执行'update'失败:没有应用程序缓存要更新。"名称:"InvalidStateError"堆栈:"错误:在'ApplicationCache'上执行'update'失败:没有应用程序缓存要更新。"↵

applicationCache.cache =0

清单非常好,不同的部分完全是可选的。

如果状态为0,这仅仅意味着浏览器从未成功下载清单及其所有内容。所以如果你想手动运行applicationCache.update()方法,确保有一个缓存,并且它目前没有被更新,例如

status == 1 || status > 3

您的cache.appcache看起来无效,它应该是这样的:

CACHE MANIFEST
#v0.0.1 change this to force update
CACHE:
./my.js

如果在此之后它仍然不工作,你能给我一个完整的HTML,以便我可以测试它更多?

我今天在Chrome浏览器中看到了这个错误。我在我的应用中启用了应用缓存和Service Worker。所以当你禁用Service Worker时,它会像预期的那样工作。但是当两者都有时,Update缓存事件被触发,但是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);
}