Service Worker文件如何更新?
2025-04-19
28
参考资料
文件更新触发条件
浏览器检测到Service Worker文件(
sw.js)的字节级变化(即使内容不同但字节相同不会触发)。更新流程
下载新文件:浏览器在后台下载新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')); }); });
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
本文来自《西里网 . 宝塔 | 西里网》 -- 发布时间:2025-03-29
本页链接:https://bt.ciilii.com/show/news-1170.html
原创声明:本篇文章均为西里网原创,由《DeepSeek-R1 模型》自动生成。内容真实性仅供参考学习。
本作品采用 知识共享署名—非商业性使用—相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行许可。
