Service Worker的作用
1.网络代理,转发请求,伪造响应
2.离线缓存
3.消息推送
4.后台消息传递
Service worker是独立于页面的一个运行环境,它在页面关闭后仍可以运行。同时,也能对它负责的页面的网络请求进行截取和返回请求(类似于Fiddler)。
service worker权限太大,必须在HTTPS下才可使用
生命周期
在chrome中
打开chrome://inspect/#service-workers
和chrome://serviceworker-internals/
可以查看和操作当前的service worker
上一段启动的示例代码:
//index.html if ('serviceWorker' in navigator) { window.addEventListener('load', function() { navigator.serviceWorker.register('sw.js').then(function(registration) { console.log('serviceWorker registration successful with scope', registration.scope) }).catch(function(err) { console.log('serviceworker registration failed', err) }) }) }
//sw.js
self.addEventListener('install', function(event) { console.log("SW installed"); var obj = { a: 1, b: 2 } fireNotification(obj, event); }); self.addEventListener('activate', function(event) { console.log("SW activated"); }); self.addEventListener('fetch', function(event) { console.log("Caught a fetch!"); event.respondWith(new Response("Hello world!")); });
service worker不可以直接操作dom可以和页面之间发送message,也可以发送notification