首页 文章

停止服务工作者获取事件缓存特定文件

提问于
浏览
1

我正在侦听服务工作者中的获取事件,并想知道何时对缓存的获取进行响应?

1)触发获取事件时? PreventDefault()来阻止它? 2)我是否需要缓存:在我的FETCH调用的INIT参数上没有存储? 3)它是否发生在event.respondWith()时间?

我有一个数据传输策略,旨在尽可能新鲜地提供数据,并且只在网络缓慢时才进入缓存 . 但即使这样,网络提取仍会运行,以便在缓存完成时更新缓存 .

没有像INIT这样的东西“没有缓存”我们是不是只有读取缓存的FETCH的风险?

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

3 回答

  • 1

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

    缓存实例不是浏览器的HTTP缓存的一部分

    不要将HTTP缓存与Cache API的缓存混淆 .

    HTTP缓存存在于服务工作者和网络之间,因此,如果您希望浏览器不缓存(在HTTP缓存中)响应,则在获取资源时必须使用“no-store”选项 .

    其他缓存完全由您直接控制,所以如果您不在其中存储任何内容,则不会从中获取任何内容 .

  • -1

    Spec说这不应该发生: -

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

    5.2 . 了解缓存生命周期

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

  • 3

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

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

相关问题