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

最佳答案

According to the service worker spec


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


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

似乎也没有任何检查缓存大小的方法。但是请注意,作品中有相关的规范,例如Quota Management API。上面链接的Jake Archibald的文章提供了使用this 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是未定义的-我认为这尚未在任何地方实现。希望如果我错了,有人会纠正我。

10-06 07:43