js service worker
概念
service worker实际上是充当位于Web应用程序,浏览器和网络(如果可用)之间的代理服务器。它们的主要作用是创建有效的脱机体验,拦截网络请求并根据网络是否可用采取适当的措施,以及更新服务器上的资产。他们还将允许访问推送通知和后台同步API。
特点
- 由事件驱动的,具有生命周期
- 可以访问cache和indexDB
- 支持推送
- 并且可以让开发者自己控制管理缓存的内容以及版本
- 没有DOM访问权限
- 基于web worker
- 完全异步,无法使用XHR和localStorage
- 只能使用HTTPS以及localhost
- 一旦被 install,就永远存在,除非被 uninstall或者dev模式手动删除
使用
注册
if ('serviceWorker' in navigator) { navigator.serviceWorker.register('./sw-test/sw.js', {scope: './sw-test/'}) .then((reg) => { // registration worked console.log('Registration succeeded. Scope is ' + reg.scope); }).catch((error) => { // registration failed console.log('Registration failed with ' + error); }); }
下载,安装并激活
生命周期
https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers
打不死的小强