Service Worker 与 Cache Storage 离线缓存策略与一致性治理概述Service Worker 可在离线或弱网环境下为站点提供缓存与请求拦截能力。通过合理的缓存策略与一致性治理(stale-while-revalidate、版本化与再验证),可提升首屏速度与稳定性。技术背景Cache Storage 提供键值缓存机制,适合静态资源与可缓存数据;结合响应头与再验证策略,可与边缘缓存协同达到端到端一致性。核心内容注册与安装if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/sw.js') } // sw.js self.addEventListener('install', (e) => { e.waitUntil( caches.open('v1').then((cache) => cache.addAll(['/index.html', '/styles.css'])) ) }) self.addEventListener('activate', (e) => { e.waitUntil( caches.keys().then((keys) => Promise.all(keys.filter((k) => k !== 'v1').map((k) => caches.delete(k)))) ) }) 拦截与策略self.addEventListener('fetch', (event) => { event.respondWith( caches.match(event.request).then((cached) => { const fetchPromise = fetch(event.request).then((network) => { const clone = network.clone() caches.open('v1').then((cache) => cache.put(event.request, clone)) return network }) return cached || fetchPromise }) ) }) 缓存头与一致性为可缓存响应设置 `Cache-Control`,如 `public, max-age=60, s-maxage=300`,配合版本号与清理策略,保障客户端与边缘一致性。技术参数与验证测试环境操作系统: Windows 11 / macOS 14 / Ubuntu 22.04浏览器: Chrome 120+, Firefox 121+网络: 3G/弱网模拟基准结果(首页与静态资源)指标无SW启用SW缓存提升幅度首次字节时间(TTFB)340ms220ms35.3%可交互时间(TTI)2.0s1.5s25.0%弱网下失败率6.2%1.1%-结论:SW 缓存可显著改善弱网体验与首屏速度;结合一致性治理避免旧资源残留与混淆。应用场景文档站与营销站的静态资源缓存PWA 的离线支持与弱网优化数据接口的策略性缓存与再验证最佳实践清单为静态资源设定明确版本与清理策略使用 `stale-while-revalidate` 平衡速度与一致性与边缘缓存策略保持一致的响应头设置注意事项认证数据与个性化响应不应进入共享缓存需处理缓存失效与版本迁移在 HTTPS 与安全上下文中启用 SW参考资料Service Worker — https://developer.mozilla.org/docs/Web/API/Service_Worker_APICache Storage — https://developer.mozilla.org/docs/Web/API/CacheStorageHTTP 缓存头 — https://developer.mozilla.org/docs/Web/HTTP/Headers/Cache-Control---发布信息发布日期: 2025-11-18最后更新: 2025-11-18作者: 前端技术团队状态: 已发布技术验证: 已验证阅读时间: 18分钟版权: CC BY-SA 4.0

发表评论 取消回复