我正在尝试使用 ServiceWorker 实现不同的缓存策略。对于以下策略,实施方式是完全明确的:
- 先缓存
- 仅缓存
- 网络优先
- 仅限网络
例如,在尝试实现缓存优先策略时,在 service-worker 的 fetch 钩子中,我将首先向 CacheStorage(或任何其他)询问请求的 URL,然后如果存在respondWith
它,如果不存在respondWith
网络请求的结果.
但是对于根据这个工作箱定义的 stale-while-revalidate 策略,我有以下问题:
- 首先是关于机制本身。stale-while-revalidate 是否意味着在网络响应之前使用缓存然后使用网络数据或仅使用网络响应来更新您的缓存数据以供下次使用?
- 现在,如果网络被缓存以备下次使用,那么哪些场景包含它的真实用例?
- 如果网络响应应该在应用程序中立即被替换,那么如何在 service worker 中完成呢?因为钩子将通过缓存数据解析,然后网络数据无法解析(使用
respondWith
)。