Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否仍有删除我的用户缓存的方法?_Javascript_Caching_Service Worker_Browser Cache_Service Worker Events - Fatal编程技术网

Javascript 是否仍有删除我的用户缓存的方法?

Javascript 是否仍有删除我的用户缓存的方法?,javascript,caching,service-worker,browser-cache,service-worker-events,Javascript,Caching,Service Worker,Browser Cache,Service Worker Events,我制作了一个sw.js文件来缓存我的聊天网站,这样用户就可以在脱机模式下打开。然而,服务人员文件导致了很多问题,包括看不到新消息和很多网站崩溃,所以我被迫将其删除。遗憾的是,我的当前用户都无法手动删除缓存!请注意,我保留了sw.js文件,但现在它是空的,那么是否有任何代码可以用来删除所有当前用户缓存 我认为这与此无关,但我的应用程序使用django来删除缓存,您可以使用inbuild缓存API caches.keys().then(cacheNames => { cacheName

我制作了一个sw.js文件来缓存我的聊天网站,这样用户就可以在脱机模式下打开。然而,服务人员文件导致了很多问题,包括看不到新消息和很多网站崩溃,所以我被迫将其删除。遗憾的是,我的当前用户都无法手动删除缓存!请注意,我保留了sw.js文件,但现在它是空的,那么是否有任何代码可以用来删除所有当前用户缓存


我认为这与此无关,但我的应用程序使用django来删除缓存,您可以使用inbuild缓存API

caches.keys().then(cacheNames => {
    cacheNames.forEach(value => {
        caches.delete(value);
    });
})
仅从sw.js文件中删除内容是不够的。如果已经安装并运行了一个服务工作者,那么我建议您也“注销”它。你可以这样做 以编程方式使用下面的代码

navigator.serviceWorker.getRegistrations().then(function(registrations) {
    for(let registration of registrations) {
        registration.unregister()
    } 
})

请注意,您只需在所有用户的浏览器中运行此代码一次。

谢谢您的回复,我应该将此代码放在基本HTML文件中还是放在空的sw.js文件中?另外,是否还有其他方法来检查代码是否已经在用户的浏览器中运行,以避免再次运行?非常感谢你的帮助!您可以将此代码放在基本HTML文件中,但可能存在问题,因为如果HTML文件是从缓存中提供的,那么这些更改将不会反映和执行。我怀疑是否有办法提前知道此代码是否已执行。还有其他一些方法来解决这种情况。例如,让它在当前版本中运行,在新版本中运行几周后,删除这段代码,因为它不再需要,直到所有缓存都被清除。