Service Worker 生命周期演示器 - 安装/激活/更新
逐步展示SW从注册、安装到激活的完整流程,并模拟更新与跳过等待的场景。
UD5工具箱
版本: v1
控制页面: 3 个 (index, about, contact)
版本: v2 (待安装)
控制页面: 0 个
skipWaiting() 方法。
skipWaiting() 会让等待中的新 SW 立即激活,即使旧 SW 仍在控制页面。风险在于:两个版本的 SW 可能同时处理请求(旧页面用旧 SW,新页面用新 SW),导致缓存版本冲突。通常推荐在以下场景使用:clients.claim() 一起使用,确保所有页面立即由新 SW 控制;install 事件中预缓存关键资源时;clients.claim() 让新激活的 SW 立即接管所有在它 scope 范围内的已打开页面(clients)。如果不调用此方法,新 SW 只会在后续新打开的页面或刷新后的页面中生效。默认情况下,SW 激活后不会自动接管已打开的页面,这是一种安全设计。调用 claim() 可以实现无缝切换,但需注意页面可能已经在旧 SW 的缓存策略下加载了部分资源。
navigator.serviceWorker.registration 的 updatefound 事件来检测更新。当新的 SW 开始下载时,该事件触发。然后监听新 SW 的 statechange 事件,当状态变为 installed(即 waiting)时,说明有更新等待激活。示例代码:registration.addEventListener('updatefound', () => { const newSW = registration.installing; newSW.addEventListener('statechange', () => { if (newSW.state === 'installed' && navigator.serviceWorker.controller) { /* 有更新可用 */ } }); });
install 事件,通常用于预缓存资源;activate 事件,可清理旧缓存;Registration.waiting.postMessage() 与 waiting 的 SW 通信,实现更精细的更新控制。
逐步展示SW从注册、安装到激活的完整流程,并模拟更新与跳过等待的场景。
输入一组快捷键,检测在主流操作系统和浏览器中是否已被系统或软件占用。
注册Periodic Background Sync,让应用在后台定期获取最新数据并更新缓存。
向指定 URL 发送不同 HTTP 方法的请求,显示响应状态码、头部和主体,学习 RESTful API。
提供一份涵盖性能、安全、备份、监控等上线前检查清单,可自定义勾选。
注册一个Service Worker拦截请求并人为添加延迟,模拟慢速2G/3G网络效果。
创建闪卡并根据掌握程度放入5个盒子,按照不同间隔自动提供今日复习卡组。
勾选需要临时禁用的 ESLint 规则,生成对应的 /* eslint-disable */ 注释语句。
发起请求获取当前URL或任意允许CORS的URL的Response Headers,展示详情。
配置事件类型和重试间隔,生成用于接收 SSE 的前端 EventSource 代码和后端流示例。
激活 beforeunload 事件,尝试刷新或关闭标签页时会弹出浏览器确认提示,展示实现方式。
创建当用户离线时展示的简单HTML页面,结合Service Worker使用。
在单页内模拟MPA过渡效果,自定义进场/出场动画,体验View Transitions API丝滑切换。
随机生成包含主角、场景与冲突的写作提示,拯救空白文档,激发创作欲。
在两个视图间切换并调用 document.startViewTransition,观察浏览器默认过渡动画。
简易三列看板,任务卡片可拖拽并标记颜色,本地保存任务流。
向任意输入URL发送请求,清晰显示响应状态码、头信息和体,类似轻量级Postman。
将同类待办归入电话、外出、电脑等情境,一目了然优化执行顺序。
注册一个后台同步任务,展示如何在网络恢复后自动同步表单提交等操作。
根据输入的外部域名,生成 dns-prefetch、preconnect 和 preload 标签。
设置浏览器标题和图标,模拟在暗色/亮色主题下标签栏的样子。
粘贴Link rel=preload头字段,解析展示服务器计划推送的资源列表。
添加知识点,按艾宾浩斯曲线自动生成未来几周的复习日期提醒。
创建活动链接,分享后收集参与者出席回应,实时显示参与、婉拒与未回复名单。
调节频率、包络和波形,合成短促的UI提示音并下载WAV。
分别在主线程和 Worker 中使用 Canvas 执行密集绘制,对比 FPS 和主线程阻塞程度。
设置可用时段与会议室名称,模拟用户拖拽创建预订并查看冲突。
解析标准Cron表达式,显示未来多次执行的具体日期时间,辅助验证定时任务配置。
选择算法并随机生成数组,以彩色条动画展示排序过程,帮助理解算法。
实时显示touchstart/move/end事件的所有属性:坐标、力度、半径与角度,辅助手势开发。