服务工作者如何阻止'获取'从消耗太多的磁盘空间?

时间:2015-07-18 07:00:32

标签: javascript service-worker

我是否知道可用于防止addEventListener('fetch'&&的策略是什么? cache.put(来填满用户的磁盘空间?无论如何都要为缓存中的每个请求设置expirary?

1 个答案:

答案 0 :(得分:3)

According to the service worker spec

  

Cache对象正是作者必须自己管理的对象。   除非作者明确请求,否则不会更新Cache对象   他们是。除非作者删除,否则Cache对象不会过期   条目。

请注意the browser can throw your cache away如果它想要(并且你应该假设它有时会这样),特别是如果它决定你存储太多 - 它不会让你填满用户的整个驱动器。

似乎没有任何方法可以检查缓存的大小。但请注意,工作中存在相关规范,例如Quota Management API。上面链接的Jake Archibald的文章提供了以下使用此API的示例(它将为您提供所有站点存储的结果,而不仅仅是您的缓存):

navigator.storageQuota.queryInfo("temporary").then(function(info) {
  console.log(info.quota);
  // Result: <quota in bytes>
  console.log(info.usage);
  // Result: <used data in bytes>
});

然而,我刚刚在Chrome Canary中尝试了此操作,storageQuota未定义 - 我不认为这是在任何地方实施的。如果我错了,希望有人会纠正我。