[ PROMPT_NODE_24030 ]
Cache Reserve 常见陷阱
[ SKILL_DOCUMENTATION ]
# Cache Reserve 注意事项
## 常见错误
### "资产未缓存到 Cache Reserve 中"
**原因:** 资产不可缓存、TTL < 10 小时、缺少 Content-Length 标头,或存在阻塞标头(Set-Cookie, Vary: *)
**解决方案:** 确保最小 TTL 为 10 小时以上(`Cache-Control: public, max-age=36000`),添加 Content-Length 标头,移除 Set-Cookie 标头,并设置 `Vary: Accept-Encoding`(不要使用 *)
### "范围请求不工作" (视频拖拽失败)
**原因:** Cache Reserve **不支持**范围请求(HTTP 206 Partial Content)
**解决方案:** 范围请求会完全绕过 Cache Reserve。对于支持拖拽的视频流:
- 仅使用边缘缓存(较短的 TTL)
- 考虑使用 R2 直接访问以处理高频范围请求的工作负载
- 接受可拖拽内容无法从 Cache Reserve 持久化中获益的事实
### "源站带宽高于预期"
**原因:** Cache Reserve 从源站获取的是**未压缩**的内容,即使它向访客提供的是压缩内容
**解决方案:**
- 如果源站按带宽收费,请考虑未压缩传输的成本
- Cache Reserve 会自动为访客压缩内容(节省访客带宽)
- 权衡:源站出口节省 vs 更高的未压缩获取成本
### "Cloudflare Images 未通过 Cache Reserve 缓存"
**原因:** 带有 `Vary: Accept` 标头(格式协商)的 Cloudflare Images 与 Cache Reserve 不兼容
**解决方案:**
- Cache Reserve 会静默跳过带有 Vary 标头的图像以进行格式协商
- 原始图像(未转换)可能仍符合条件
- 使用 Cloudflare Images 变体或边缘缓存来处理转换后的图像
### "高额 A 类操作成本"
**原因:** 频繁的缓存未命中、短 TTL 或频繁的重新验证
**解决方案:** 增加稳定内容的 TTL(24 小时以上),启用分层缓存以减少直接的 Cache Reserve 未命中,或使用 stale-while-revalidate
### "清除未按预期工作"
**原因:** 按标签清除仅触发重新验证,但不会从 Cache Reserve 存储中移除
**解决方案:** 使用按 URL 清除以实现即时移除,或禁用 Cache Reserve 然后清除所有数据以实现彻底移除
### "O2O (Orange-to-Orange) 资产未缓存"
**原因:** O2O(代理区域请求 Cloudflare 上的另一个代理区域)会绕过 Cache Reserve
**解决方案:**
- **什么是 O2O**:区域 A(已代理)→ 区域 B(已代理),两者都在 Cloudflare 上
- **检测**:检查 `cf-cache-status` 是否为 `BYPASS` 并查看请求路径
- **变通方案**:使用 R2 或直接访问源站