生产环境用Workbox管理路由缓存需聚焦三点:明确缓存资源、选对策略、精准匹配路由;静态资源预缓存+CacheFirst,图片配ExpirationPlugin,API按一致性分级用NetworkFirst或StaleWhileRevalidate,路由仅函数匹配且限定域名路径,启用skipWaiting()和clientsClaim()。

生产环境用 Workbox 管理路由缓存,核心是三点:明确缓存哪些资源、为每类资源选对策略、确保路由匹配精准不越界。不是堆功能,而是按业务逻辑做取舍。
静态资源走预缓存 + CacheFirst
HTML、JS、CSS、字体等构建时带哈希名的文件,天然支持版本控制。Workbox 在 install 阶段自动完成预缓存,后续请求默认走 CacheFirst——先查缓存,没命中再发网络请求。
- Webpack 项目推荐用 InjectManifest 模式,在自定义 sw.js 中调用
precacheAndRoute(self.__WB_MANIFEST) - 避免直接用
generateSW全量注入,它可能把 dev-only 资源也打进预缓存列表 - 预缓存清单需经构建工具(如 workbox-webpack-plugin)生成,不能手写 URL 和 revision
图片加过期控制,防缓存膨胀
图片体积大、更新频率低但又非永久有效,只用 CacheFirst 不够,必须配 ExpirationPlugin。
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 匹配方式优先用
request.destination === 'image',比正则更语义化、跨域安全 - 典型配置:
maxEntries: 60控制数量上限,maxAgeSeconds: 30 * 24 * 3600设 30 天有效期 - 不建议按后缀(如
/\.png$/)匹配,容易漏掉 WebP、AVIF 等新型格式
API 接口按一致性分级处理
动态接口不能预缓存,全靠运行时路由注册。策略选择取决于“用户能不能接受旧数据”:
-
NetworkFirst:用户资料、订单状态等强一致场景。可设
networkTimeoutSeconds: 3,超时即读缓存 - StaleWhileRevalidate:天气、新闻列表等允许短暂滞后的场景。首屏秒开,后台静默更新
- 埋点、日志类请求搭配
BackgroundSync,离线暂存,联网后自动重发
路由匹配必须精确到域名和路径前缀
宽泛匹配是线上事故高发区。Workbox 的 registerRoute 支持字符串、正则、函数三种方式,生产环境只推荐函数匹配。
- 禁止写
registerRoute(/.*/, strategy)—— 会拦截所有请求,包括跨域 SDK、CDN 图片、第三方统计 - 推荐写法:
({url, request}) => url.origin === 'https://api.example.com' && request.method === 'GET' - 若需匹配多个子域名,用
url.hostname.endsWith('.example.com')比正则更可靠
启用 skipWaiting() 和 clientsClaim() 是为了让新 Service Worker 立即接管页面,避免旧缓存残留。这两行应放在 sw.js 顶部,紧随 importScripts 之后。


















