admin管理员组文章数量:1438832
Service Worker文件如何更新?
参考资料
- Nginx基本介绍
- Nginx作为反向代理的功能
- 如何结合WAF使用Nginx提高安全性?
- Nginx的负载均衡能力
- nginx 配置方式
- nginx 配置反向代理
- Nginxtry_files 文件判断指令详细说明以及案例
- NginxHTTPS服务器搭建详细说明以及案例
- 文件更新触发条件
- 浏览器检测到Service Worker文件(
sw.js
)的字节级变化(即使内容不同但字节相同不会触发)。
- 浏览器检测到Service Worker文件(
- 更新流程
- 下载新文件:浏览器在后台下载新Service Worker文件。
- 安装阶段:触发
install
事件,新旧Worker共存。 - 等待阶段:新Worker处于
waiting
状态,直到旧Worker控制的页面全部关闭。 - 激活阶段:触发
activate
事件,新Worker接管控制。
- 强制立即更新方法
- if ('serviceWorker' in navigator) {
- navigator.serviceWorker.register('/sw.js').then(reg => {
- reg.update();
- });
- }
- 跳过等待阶段
在
install
事件中调用self.skipWaiting()
:- self.addEventListener('install', () => {
- self.skipWaiting();
- });
- 清理旧缓存
在
activate
事件中清理旧缓存:- self.addEventListener('activate', event => {
- event.waitUntil(
- caches.keys().then(keys => {
- return Promise.all(keys.map(key => {
- if (key !== CURRENT_CACHE) {
- return caches.delete(key);
- }
- }));
- })
- );
- });
- 客户端刷新控制
通过
postMessage
通知客户端刷新:- self.addEventListener('activate', event => {
- self.clients.matchAll().then(clients => {
- clients.forEach(client => client.postMessage('sw-updated'));
- });
- });
本文标签: Service Worker文件如何更新
版权声明:本文标题:Service Worker文件如何更新? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747598767a2726500.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论