2016-03-03 29 views
0

我正在侦听服务工作者中的提取事件,并想知道何时对缓存提取的响应?停止服务工作者提取事件缓存特定文件

1)当提取事件被触发? PreventDefault()停止它? 2)我是否需要缓存:在我的FETCH调用的INIT参数中不存储? 3)它是否发生在event.respondWith()时间?

我有一个数据交付策略,旨在提供尽可能新鲜的数据,并且只在网络速度缓慢时才进入缓存。但即使这样,只要网络抓取运行完成,就可以更新缓存。

没有像INIT这样的东西“no-cache”是不是我们存在FETCH只读缓存的风险呢?

我(错误地?)假定缓存是选择性的,我不得不用PUT()手动更新缓存。

+0

规范说这不应该发生: - –

回答

0

规格说,这不应该发生: -

https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#cache-lifetimes

5.2。了解缓存的使用期限

缓存实例不是浏览器的HTTP缓存的一部分。 Cache对象正是作者必须自己管理的。 Cache对象不会更新,除非作者明确要求它们是。除非作者删除条目,否则Cache对象不会过期。缓存对象不会因为服务工作者脚本被更新而消失。也就是说,缓存不会自动更新。更新必须手动管理。这意味着作者应该按名称对缓存进行版本化,并确保仅使用可以安全操作的服务工作人员版本中的缓存。

2

https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#cache-lifetimes

缓存实例是不是浏览器的HTTP缓存

不要混淆缓存API的高速缓存中的HTTP缓存的一部分。

HTTP缓存驻留在服务工作者和网络之间,因此,如果您希望浏览器不缓存(在HTTP缓存中)缓存响应,您必须在提取缓存时使用“无存储”选项资源。

其他的缓存完全直接在你的控制之下,所以如果你没有在它们中存储任何东西,你不会从它们那里得到任何东西。

+0

不错,总结关于此主题的Mozilla博客帖子:https://hacks.mozilla.org/2016/03/referrer-and-cache-control-apis-for-fetch / –

-1

fetchEvent.respondWith()是否实际返回到它下面的代码或执行和隐式RETURN。

这是一个“答案”,因为我相信它可以解释我在Chrome上看到的内容。