如何清除 Firefox 中的 Service Worker 缓存?
Posted
技术标签:
【中文标题】如何清除 Firefox 中的 Service Worker 缓存?【英文标题】:How to clear a Service Worker cache in Firefox? 【发布时间】:2017-05-28 22:50:53 【问题描述】:在 Chrome 中,可以从开发工具中清除 Service Worker 缓存。
我们如何在 Firefox 中实现这一点?
到目前为止我已经尝试过:
取消注册about:serviceworkers
中的服务
清空about:preferences#privacy
下的缓存
用Ctrl + F5
重新加载页面
但它仍然存在......
【问题讨论】:
使用about:preferences#privacy
屏幕现在将清除服务工作者缓存。您可以使用"Manage Data..."
按钮清除特定站点缓存,或使用"Clear Data..."
按钮清除所有内容。
【参考方案1】:
您可以在 Firefox Web Console 中执行以下代码 sn-p:
caches.keys().then(function (cachesNames)
console.log("Delete " + document.defaultView.location.origin + " caches");
return Promise.all(cachesNames.map(function (cacheName)
return caches.delete(cacheName).then(function ()
console.log("Cache with name " + cacheName + " is deleted");
);
))
).then(function ()
console.log("All " + document.defaultView.location.origin + " caches are deleted");
);
有关此代码 sn-p 的更多信息,请查看 MDN 上的Cache Web API page。
在当前版本的 Firefox 中,您无法使用 Storage Inspector 清除 Service Worker 缓存。有关当前可用的功能,请参阅Storage Inspection documentation。您不能使用 about:preferences#privacy
或取消注册 Service Worker,因为 Service Worker 缓存独立于浏览器 HTTP 缓存工作,并且仅由您的脚本管理。相关摘自Service Worker specification:
5.2 了解缓存生命周期 Cache 实例不是浏览器 HTTP 缓存的一部分。 Cache 对象正是作者必须自己管理的对象。除非作者明确要求,否则缓存对象不会更新。除非作者删除条目,否则缓存对象不会过期。缓存对象不会仅仅因为服务工作者脚本被更新而消失。也就是说,缓存不会自动更新。必须手动管理更新。这意味着作者应该按名称对缓存进行版本控制,并确保仅使用可以安全操作的服务工作者版本的缓存。
【讨论】:
【参考方案2】:如上所述,目前不可能。但是删除缓存条目和缓存已经实现,应该很快就会推出(https://bugzilla.mozilla.org/show_bug.cgi?id=1304297)。例如,它已经在 Firefox 开发者版中可用。
【讨论】:
现在可以从 v52 开始 @Supersharp 怎么样? 从 Firefox 75.0 开始,您必须输入about:debugging
并向下滚动到“Service Workers”【参考方案3】:
在 Firefox 的地址栏中输入这个并注销你想要的服务工作者。
about:debugging#workers
编辑:在较新的版本中,#worker
锚不起作用。您必须向下滚动到 Service Workers
部分。
【讨论】:
提供一些更新,#workers
锚现在似乎不起作用。我输入了about:debugging
并向下滚动以上是关于如何清除 Firefox 中的 Service Worker 缓存?的主要内容,如果未能解决你的问题,请参考以下文章