cachestorage 适合缓存首屏强依赖、低频变动、无用户身份绑定的 get 接口,如 banner、菜单、字典等;需配合 service worker 实现拦截与缓存,采用 stale-while-revalidate 策略,并注意版本管理、凭证控制、response.clone() 及大小限制。

直接用 CacheStorage 缓存 API 响应数据,能绕过网络请求,在首屏加载时秒级返回数据。关键不是“能不能存”,而是“存什么、怎么取、何时更新”——重点在策略设计,不在接口调用本身。
CacheStorage 适合缓存哪些首屏接口
它专为 GET 类资源请求设计,特别适合首屏强依赖、变动频率低、无用户身份强绑定的接口,比如:
- 首页 Banner 列表(/api/v1/banner)
- 全局导航菜单(/api/v1/menu)
- 城市/分类等基础字典(/api/v1/regions、/api/v1/categories)
- 带版本号或哈希参数的静态配置(/api/v1/config?v=2.3.0)
不建议缓存含敏感字段(如用户余额、未读消息数)、需实时校验(如库存)、或 URL 含动态 token 的接口——这类数据更适合用 localStorage + 时间戳做轻量兜底。
配合 Service Worker 实现自动拦截与缓存
CacheStorage 不能单独使用,必须通过 Service Worker 注册后,在 fetch 事件中主动调用。典型流程如下:
- 在 sw.js 的 install 阶段,用 caches.open('home-v1') 创建命名缓存,并预存核心接口响应(可选)
- 在 fetch 事件中,先匹配当前请求 URL 是否属于目标接口(如正则匹配 /api/v1/(banner|menu)/)
- 命中缓存则直接 return response;未命中则 fetch 网络,拿到 Response 后 clone 一份写入缓存再返回
- 对首屏关键接口统一采用 stale-while-revalidate 策略:先返回旧缓存保首屏速度,后台静默拉新
避免缓存污染和失效失控的实操要点
CacheStorage 没有过期自动清理机制,全靠开发者控制。几个易错但关键的细节:
- 缓存名建议带版本,如 'home-v2',升级时在 activate 阶段调用 caches.delete('home-v1') 清旧留新
- 不要缓存带 Cookie 或 Authorization 头的请求——默认不包含凭证,若需携带,fetch 时要显式加 credentials: 'include'
- Response 对象不可多次读取,写入缓存前必须用 response.clone() 分离副本,否则后续读取会失败
- 单个缓存条目大小受限(通常单文件 ≤ 7MB),大响应(如含 base64 图片的富文本)应先压缩或转 CDN 地址再缓存
与 localStorage 方案的分工逻辑
CacheStorage 和 localStorage 不是替代关系,而是分层协作:
- CacheStorage:管“请求—响应”原始流,支持状态码、headers、重定向,适合多接口统一调度
- localStorage:管“解析后结构化数据”,便于手动加时间戳、做字段筛选、离线时快速渲染
- 推荐组合:Service Worker 用 CacheStorage 缓存原始响应 → 前端 JS fetch 后解析 JSON → 把关键字段+时间戳存 localStorage → 首屏优先读 localStorage,再触发后台刷新
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











