如何强制Cloudflare缓存被判定为CF-Cache-Status: DYNAMIC的API
Cloudflare页面规则缓存GET API返回DYNAMIC的解决方案
核心问题排查与修复步骤
修正无效的页面规则匹配逻辑
你当前配置的匹配URL https://.com:8443/cache_* 本身是无效规则,缺少域名主体,不会命中任何请求。请将匹配规则改为对应你实际业务域名的格式,例如:
*://你的实际域名:8443/cache_*
同一条规则内除了设置Cache Level: Cache Everything,还需要补充两个配置:
- 显式设置
Edge Cache TTL为你需要的缓存时长(例如10分钟) - 按需开启
Origin Cache Control: Off,强制忽略源站返回的缓存控制头
排查源站响应头限制
Spring Boot默认返回的响应头会触发Cloudflare的动态内容判定,你可以绕开Cloudflare直接请求源站,检查是否存在以下字段:
Set-Cookie:Cloudflare默认不会缓存返回Set-Cookie的响应,如果是公共无用户态的接口,可以在Spring Boot侧去掉该响应头,或者在页面规则中添加Remove Set-Cookie Header配置Cache-Control: no-cache/no-store/private:这类头会直接禁止缓存,要么在Spring Boot接口中手动返回Cache-Control: public, max-age=600,要么通过上面提到的Origin Cache Control: Off配置强制覆盖
确认代理状态正常
- 检查域名解析记录为橙色云(代理模式),灰色云(仅DNS)模式下所有页面规则、缓存配置都不会生效
- 确认8443端口属于你Cloudflare套餐支持的代理端口范围,免费套餐默认支持该端口
验证配置生效
调整完成后多次执行命令测试:curl -I https://你的实际域名:8443/cache_xxx
第二次请求返回CF-Cache-Status: HIT即为配置成功。
内容的提问来源于stack exchange,提问作者Ujjwal Singh
相关产品推荐
相关产品推荐

