如果你正在使用 Service Worker,你还需要 cache-control headers 吗?

If you are using Service Workers do you still need cache-control headers?

有没有 use-case 应该优先使用 cache-control headers 而不是 Service Worker?使用它们有什么好处吗(除了不支持 SW 的事实 cross-browser)?

当然可以。由 HTTP 缓存 headers 控制的 HTTP 缓存位于网络和 Service Worker 之间。从 Service Worker 发起的所有 fetch 请求仍然使用 HTTP 缓存。

假设您有一个 max-age 长的脚本。大多数 Service Worker 每次安装时都会重新填充缓存,也就是说,每次 something/anything Service Worker 脚本发生变化时。但是,如果正确配置了 HTTP 缓存 headers,许多要包含在 Service Worker 缓存中的资源将仍然存在于 HTTP 缓存中,并且可以在不涉及网络的情况下获取。

正确配置的 HTTP headers 对于中间缓存代理 (CDN) 的正常工作也是必不可少的。代理对 Service Worker 及其缓存一无所知。

Jake Archibald 的 Caching best practices & max-age gotchas 中有更多相关内容。