注销时如何清除服务工作者缓存?

MDMower

热门问题如何卸载服务工作者?对于使用JavaScript取消注册服务工作者有一个很好的答案。在注销时,我如何让服务工作者清除所有命名的缓存?

通过MDN unregister服务工作者将在注销之前完成所有正在进行的操作。因此,听起来应该可以侦听某个uninstall事件,但据我所知,尚无此类事件对于傻笑,我尝试添加self.addEventListener('uninstall', ...)到服务人员,但正如预期的那样,未注销时未触发。我还尝试过监听message可能在注销时发送的任何内容……没有骰子。

我也算是看着服务工作者状态,但没有的installinginstalledactivatingactivated,和redundant相关的出现。更不用说,这看起来不太可能将消息传递给服务人员,因此我不确定无论如何我都会uninstalling对服务人员外部的状态进行处理。

伸手去拿稻草,虽然我看到了有关卸载标志的引用,但是我还没有看到它暴露在任何地方。有什么建议吗?

杰夫·波斯尼克

以下代码应注销所有服务工作者,并清除您原始缓存存储API中的所有内容:

async function unregisterAndClearCaches() {
  const registrations = await navigator.serviceWorker.getRegistrations();
  const unregisterPromises = registrations.map(registration => registration.unregister());

  const allCaches = await caches.keys();
  const cacheDeletionPromises = allCaches.map(cache => caches.delete(cache));

  await Promise.all([...unregisterPromises, ...cacheDeletionPromises]);
}

使用Clear-Site-Data标头是用于在单个操作中“强制”清除所有内容(服务工作者注册,缓存等)的另一个选项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

刷新时激活更新的服务工作者

如何卸载服务工作者?

离线时服务工作者未注册

如何列出服务工作者已经存储在浏览器缓存中的博客帖子?

服务工作者和客户端请求“缓存控制”:“无缓存”

WebView:以编程方式清除服务工作者缓存

使用CSRF令牌缓存请求时,如何减少服务工作者缓存的大小

服务工作者不会从缓存中返回文件

具有SSL证书缓存的服务工作者

PWA服务工作者缓存/更新预期行为

notificationclick事件服务工作者

根据年龄删除服务工作者缓存中的条目

延迟加载或预加载Angular模块并使用服务工作者来缓存结果?

如何根据服务工作者中的某些标志缓存响应

如何在服务工作者中刷新图片

在服务工作者中服务之前,可以编辑缓存的index.html吗?

通常,服务工作者应预缓存哪些文件?

从Create React App注册服务工作者时如何更新页面

PWA-服务工作者(反应)如何工作?

如何防止服务工作者删除缓存,PWA

如何由服务工作者更新缓存的资源

服务工作者中的XMLHttpRequest

服务工作者,它是如何工作的?

如何使用服务工作者预缓存名称在每次部署时都会更改的资产?

服务工作者从磁盘缓存中缓存资源

服务工作者在反应中缓存的路由

服务工作者缓存与 VuexPersistence

角度缓存 - 我们应该使用服务工作者吗?

服务工作者缓存破坏谷歌地图 api