当浏览器缓存处理缓存时,为什么使用服务工作者进行缓存?

我了解到使用服务工作者进行离线缓存与浏览器缓存类似。如果是这样,那么为什么您更喜欢使用服务工作者进行此缓存呢?浏览器缓存将检查文件是否被修改,然后从缓存中提供服务,对于服务工作者,我们从代码中处理同样的事情。默认情况下,浏览器有这个特性,那么为什么要选择服务工作者呢?

10877 次浏览

ServiceWorkers 让您完全控制网络请求。您可以为提取事件返回任何您想要的内容,它不需要是该特定文件的过去或当前内容。

但是,如果 HTTP 缓存处理您的需求,您就没有义务使用 ServiceWorkers。

它们还用于诸如推送通知之类的事情。

文档: https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_APIhttps://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers

我希望分享我在浏览服务工作者文档并实现它时所观察到的要点。

  1. 浏览器缓存是不同的,因为服务工作者支持离线缓存,即使网络不可用,webapp 也会访问被缓存的内容。
  2. 服务人员将提供本地经验。
  3. 服务工作者不能修改 DOM 内容,但仍然可以在其作用域内为页提供服务。在 postMessage 等事件的帮助下,可以访问页面并更改 DOM。
  4. 服务工作者不需要用户互动或网页。 它在后台运行。

实际上,当使用 sw 而不是 http 缓存时,响应请求的速度要慢一些..。 因为 sw 使用缓存 api 来存储缓存内容,所以它实际上比浏览器缓存——内存缓存和磁盘缓存——要慢。

它的设计并不比 http 缓存快,但是,当你使用 sw 时,你可以完全定制响应,我认为完全可定制是你应该使用它的原因。

如果你的情况不够复杂,你不应该使用它