Javascript 是否仍有删除我的用户缓存的方法?
我制作了一个sw.js文件来缓存我的聊天网站,这样用户就可以在脱机模式下打开。然而,服务人员文件导致了很多问题,包括看不到新消息和很多网站崩溃,所以我被迫将其删除。遗憾的是,我的当前用户都无法手动删除缓存!请注意,我保留了sw.js文件,但现在它是空的,那么是否有任何代码可以用来删除所有当前用户缓存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
我认为这与此无关,但我的应用程序使用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文件是从缓存中提供的,那么这些更改将不会反映和执行。我怀疑是否有办法提前知道此代码是否已执行。还有其他一些方法来解决这种情况。例如,让它在当前版本中运行,在新版本中运行几周后,删除这段代码,因为它不再需要,直到所有缓存都被清除。