Open comTg opened 2 years ago
服务器和浏览器的中间人角色, 可以拦截网站的所有请求, 进行判断(编写相应代码), 需要向服务器发送请求的转给服务器, 可以直接使用缓存的直接返回缓存不再转给服务器.
注册service worker 在你的index.html加入以下内容
service worker
index.html
/* 判断当前浏览器是否支持serviceWorker */ if ('serviceWorker' in navigator) { /* 当页面加载完成就创建一个serviceWorker */ window.addEventListener('load', function () { /* 创建并指定对应的执行内容 */ /* scope 参数是可选的,可以用来指定你想让 service worker 控制的内容的子目录。 在这个例子里,我们指定了 '/',表示 根网域下的所有内容。这也是默认值。 */ navigator.serviceWorker.register('./serviceWorker.js', {scope: './'}) .then(function (registration) { console.log('ServiceWorker registration successful with scope: ', registration.scope); }) .catch(function (err) { console.log('ServiceWorker registration failed: ', err); }); }); }
安装worker: 在指定的处理程序serviceWorker.js中书写对应的安装及拦截逻辑
serviceWorker.js
/* 监听安装事件,install 事件一般是被用来设置你的浏览器的离线缓存逻辑 */ this.addEventListener('install', function (event) { /* 通过这个方法可以防止缓存未完成,就关闭serviceWorker */ event.waitUntil( /* 创建一个名叫V1的缓存版本 */ caches.open('v1').then(function (cache) { /* 指定要缓存的内容,地址为相对于跟域名的访问路径 */ return cache.addAll([ './index.html' ]); }) ); }); /* 注册fetch事件,拦截全站的请求 */ this.addEventListener('fetch', function(event) { event.respondWith( // magic goes here /* 在缓存中匹配对应请求资源直接返回 */ caches.match(event.request) ); });
概括
服务器和浏览器的中间人角色, 可以拦截网站的所有请求, 进行判断(编写相应代码), 需要向服务器发送请求的转给服务器, 可以直接使用缓存的直接返回缓存不再转给服务器.
如何使用
注册
service worker
在你的index.html
加入以下内容安装worker: 在指定的处理程序
serviceWorker.js
中书写对应的安装及拦截逻辑注意事项