Service Worker文件如何更新?
参考资料
- Nginx基本介绍
- Nginx作为反向代理的功能
- 如何结合WAF使用Nginx提高安全性?
- Nginx的负载均衡能力
- nginx 配置方式
- nginx 配置反向代理
- Nginxtry_files 文件判断指令详细说明以及案例
- NginxHTTPS服务器搭建详细说明以及案例
- 文件更新触发条件
- 浏览器检测到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-04-20,如有侵权请联系 cloudcommunity@tencent 删除
事件serviceworker反向代理客户端
发布评论