用于离线缓存
可以用来实现离线应用,本质上充当应用程序、浏览器和网络之间的代理服务器。
用于实现离线缓存时,它拦截 web 应用的一切请求,然后判断哪些可以直接返回缓存中的内容,哪些请求要发送到服务器。
取代 AppCache,能更精细控制。
其它使用场景
service worker 是注册在指定源和路径下的事件驱动的worker。
它工作在 worker 上下文。相对于驱动应用的主 JavaScript 线程,它工作在其它线程中,因此不会造成阻塞。
所以它还有很多其他的应用场景,例如:
- 后台数据同步,即使没有用户访问,也能更新缓存
- 集中更新计算成本高的数据,这样多个页面就可以利用同一种数据
- 自定义模板用于特定url模式
- 性能增强,比如预取用户可能需要的资源,比如相册中的后面数张图片
- 响应推送,向用户发送内容更新的推送消息
注意
- 出于安全考量,Service workers只能由HTTPS承载。为了便于开发,localhost 也被认为是安全源
- 兼容性