Cache API 是专为缓存 HTTP 请求–响应对设计的离线存储机制,必须配合 Request 和 Response 对象使用,不支持直接存储任意数据;需通过 caches.open() 创建命名缓存,推荐带语义和版本号;手动缓存应先 fetch 再用 cache.put() 写入,注意响应未读取及克隆;读取用 cache.match() 匹配请求,支持 ignoreSearch 等选项;Service Worker 中可在 fetch 事件里实现自动缓存策略。

Cache API 不是用来存任意数据的“键值仓库”,而是专为缓存 HTTP 请求–响应对设计的离线存储机制。它必须配合 Request 和 Response 对象使用,不能像 localStorage 那样直接塞 JSON 字符串。真正灵活的关键,在于你控制请求发起时机、响应写入逻辑和匹配策略的能力。
创建命名缓存并确保版本可维护
所有操作都基于全局 caches 对象,用 caches.open() 打开或新建一个缓存空间:
- 缓存名建议带语义和版本号,例如
"api-cache-v2"或"user-data-2026",方便后续升级时精准清理旧缓存 - 该方法返回 Promise,需用
await或.then()处理,不可同步调用 - 同一域名下可同时存在多个独立缓存(如
"static-cache"和"api-cache"),互不影响
手动缓存动态 API 响应(推荐方式)
不要用 cache.add()——它会自动触发 fetch,且只支持 GET,无法处理错误或自定义响应处理。稳妥做法是先 fetch,再判断后写入:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 调用
fetch(url)获取原始Response对象 - 确保该 Response 尚未被读取(如没调过
.json()或.text()),否则会变成“已使用”状态;必要时用response.clone()复制一份 - 构造对应的
Request实例(如new Request(url, { method: 'GET' })),传给cache.put(request, response)
按需读取并解析缓存响应
Cache API 不提供 get(key) 这类直觉式接口,而是用请求去“匹配”已存响应:
立即学习“Java免费学习笔记(深入)”;
- 调用
cache.match(new Request(url))返回匹配的Response(Promise) - 匹配默认严格:URL、method、headers 全部一致才命中;如需忽略查询参数,加选项
{ ignoreSearch: true } - 拿到
Response后仍需调用.json()、.text()等方法解析内容,不能直接当 JS 对象用
在 Service Worker 中实现自动缓存策略
若想让页面加载时自动缓存特定接口,需在 Service Worker 的 fetch 事件中拦截:
- 检查
event.request.url是否匹配目标 API(如包含/api/users)且 method 是 GET - 先
caches.match(event.request)尝试命中缓存,有则直接event.respondWith(cachedResponse) - 未命中则
fetch(event.request),拿到响应后用response.clone()写入缓存,再返回原响应 - 避免缓存含敏感头(如
Authorization)或非 GET 请求,Cache API 默认不支持这类写入

















