我能否知道可以用来防止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
是未定义的-我认为这尚未在任何地方实现。希望如果我错了,有人会纠正我。