是什么:
service worker是一个脚本,由浏览器在背后默默地运行,独立于web页面。它给一些不需要页面显示和用户操作的功能 开启了一扇新的大门。
使用场景:
离线缓存,拦截请求,加入自己处理逻辑
生命周期:
下载-安装-激活
两个常用方法
clients.claim的作用是使当前SW接管已经打开的所有标签页,使用场景是用户首次打开注册sw的页面时,还存在其他同域页面的浏览器标签的情况。之前打开的页面没有被接管,所以通过clients.claim接管已经打开但没受到控制的浏览器标签页面。
skipWaiting的使用场景是在sw更新时,因为有上一个sw正在控制着所有该站点的页面,新的sw在active后进入waiting状态,直到用户将所有该站点页面关闭,新的sw才上位。这跟Chrome和VScode的更新机制一样,在使用过程中有更新的时候,并不影响你继续使用老版本,而是在重启程序后,直接才变成新版。通过skipWaiting方法,可以直接让waiting状态的新sw替换掉老的sw,注意 还会自动接管上一个sw管辖的页面。
使用介绍
demo地址:
https://github.com/pp-show/Service-Worker.git