Service Worker Demo

Service Worker 和 Web Worker 都是浏览器提供的 JavaScript 环境,用于在浏览器后台运行代码。它们的区别在于它们的作用和使用场景不同。

Service Worker 是独立进程,与浏览器进程是分开的,浏览器关闭了,他还可以运行,消息推送

Web Worker 是独立线程,Tab 进程关了,他也就关了

Service Worker 主要用于提供离线功能和推送通知,它可以在用户离线时仍然让网站正常工作,并且可以接收服务器推送的通知。
一个服务器与浏览器之间的中间人角色,如果网站中注册了service worker那么它可以拦截当前网站所有的请求,进行判断(需要编写相应的判断程序),如果需要向服务器发起请求的就转给服务器,如果可以直接使用缓存的就直接返回缓存不再转给服务器。

Web Worker 则主要用于执行耗时的计算任务,避免阻塞用户界面。

https://mp.weixin.qq.com/s/3Ep5pJULvP7WHJvVJNDV-g

  • Service worker运行在worker上下文 --> 不能访问DOM
  • 它设计为完全异步,同步API(如XHR和localStorage)不能在service worker中使用
  • 出于安全考量,Service workers只能由HTTPS承载
  • 在Firefox浏览器的用户隐私模式,Service Worker不可用
  • 其生命周期与页面无关(关联页面未关闭时,它也可以退出,没有关联页面时,它也可以启动)
  • 在控制台>Application>Cache Storage 查看Service Worker 缓存的资源
  • Copyright © 2023- markbuild