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

vbh*_*ath 47 browser-cache offline-caching service-worker

我读取服务工作者的离线缓存类似于浏览器缓存.那么为什么更喜欢服务工作者进行这种缓存.甚至浏览器缓存也会检查是否修改了文件,然后从缓存中提供服务,而服务工作者则从我们的代码中处理相同的事情.但默认情况下浏览器具有该功能,为什么更喜欢服务工作者?

Dan*_*err 17

服务工作者可让您完全控制网络请求.您可以为fetch事件返回任何内容,它不需要是该特定文件的过去或当前内容.

但是,如果浏览器缓存处理您的需求,则您没有义务使用Service Workers.

它们还用于推送通知等内容.

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

  • 我第二次“完全控制网络请求”。服务人员可以做一些事情,例如操作标头和一个资源与另一个资源(例如,脱机),这是浏览器缓存无法做到的。如果您只需要一个标准的浏览器缓存,就没有理由将其重新实现为服务工作者-它不会更快或更容易使用。 (2认同)

vbh*_*ath 5

我想分享在查看和实现服务人员文档时观察到的观点。

  1. 浏览器缓存有所不同,因为服务工作者支持脱机缓存,所以即使网络不可用,Web应用程序也将访问缓存的内容。
  2. 服务人员将提供本地经验。
  3. Service Worker无法修改DOM内容,但仍可以为其范围内的页面提供服务。借助诸如postMessage之类的事件,可以访问页面并可以更改DOM。
  4. 服务人员不需要用户交互或网页。它在后台运行。

  • “服务人员将提供本地经验。” 这是什么意思 (6认同)
  • 第 1 点也可以使用浏览器缓存。这取决于您的应用程序是如何捆绑的.... (2认同)