1

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

4

1 回答 1

3

根据服务人员规范

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

请注意,如果浏览器愿意,它可以丢弃您的缓存(并且您应该假设有时它会),特别是如果它决定您存储太多 - 它不会让您填满用户的整个驱动器。

似乎也没有任何检查缓存大小的方法。但是请注意,工作中有相关规范,例如配额管理 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未定义 - 我认为这还没有在任何地方实现。如果我错了,希望有人能纠正我。

于 2015-07-18T15:34:24.560 回答