如何清除Firefox中的Service Worker缓存?

时间:2017-01-13 14:24:56

标签: firefox browser-cache service-worker

在Chrome中,可以从开发工具中清除Service Worker缓存。

我们如何在Firefox中实现这一目标?

我到目前为止已尝试过:

  • 取消注册about:serviceworkers
  • 中的服务
  • 清空about:preferences#privacy
  • 下的缓存
  • 使用Ctrl + F5
  • 重新加载页面

但它还在那里......

3 个答案:

答案 0 :(得分:19)

您可以在Firefox Web Console中执行以下代码段:

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");
});

有关此代码段的详细信息,请检查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了解缓存生存期   缓存实例不是浏览器的HTTP缓存的一部分。 Cache对象正是作者必须自己管理的对象。除非作者明确要求,否则不会更新Cache对象。除非作者删除条目,否则Cache对象不会过期。 Cache对象不会因为更新服务工作者脚本而消失。也就是说,缓存不会自动更新。必须手动管理更新。这意味着作者应该按名称对其缓存进行版本化,并确保仅使用可以安全操作的服务工作者版本的缓存。

答案 1 :(得分:16)

在Firefox的地址栏中键入此内容,然后取消注册所需的服务人员。

about:debugging#workers

答案 2 :(得分:2)

如上所述,现在不可能。但是已经实现了删除缓存条目和缓存,并应该推出(https://bugzilla.mozilla.org/show_bug.cgi?id=1304297)。例如,它已经在Firefox Developer Edition中提供。