小记一则强制更新 Service-Worker 的方法

      发布在:前端技术      评论:0 条评论

众所周知现在 Service-Worker 几乎是项目标配,vue、react 的脚手架工具都有推荐使用 PWA,但对Service-Worker管理不善或一旦你的静态资源文件出现问题,会对于线上业务造成毁灭打击。我们最新的一个项目中使用了蚂蚁金服家的 Ant-Desgin-Pro 开箱即用中台系统,自带 PWA ,所以这里针对的是如果你的线上环境已经存在 Service-Worker,在尽可能减少影响用户体验的情况下卸载。

注意 直接更改你的 Service-Worker里的方法是不起作用的,因为你还需要 Service-Worker 能够工作,以保证版本兼容性和卸载也能够正常工作。

navigator.serviceWorker.getRegistrations()
.then(function(registrations) {
    for(let registration of registrations) {
        registration.unregister();
    }
});

这样会让浏览器直接卸载你的 Service-Worker ,但同时能够保存 Service-Worker 其他任务可以正常运行,打开 NetWork 刷新你还是可以看到部分资源就可以走 Service-Worker。

Responses