Cloudflare按前缀清除缓存不生效常见原因排查及解决方案求助
按前缀清除Cloudflare缓存失败的常见原因
- 输入的前缀格式不符合要求:Cloudflare前缀清除不允许带http/https协议头,也不能在路径末尾加不必要的通配符(*),如果输入了
https://www.myexamplesite.com/mypath或者www.myexamplesite.com/mypath/*都会导致匹配失败,正确的输入格式应为www.myexamplesite.com/mypath - 缓存键包含自定义参数:如果通过页面规则、缓存规则修改了默认缓存键,比如将查询参数、Cookie、请求头等信息加入了缓存键,此时仅按域名+路径前缀无法匹配到带额外参数的缓存条目,导致清除不生效
- 大小写敏感问题:Cloudflare默认路径匹配区分大小写,如果实际缓存的路径是
/MyPath,输入/mypath作为前缀无法匹配 - 套餐功能限制:免费版、Pro版用户的前缀清除仅支持匹配最多30个子目录层级的缓存条目,且单条前缀匹配的缓存条目数量超过上限时会出现部分清除失败的情况,企业版无此限制
- 页面规则/缓存规则的绕过逻辑:如果对应路径的缓存规则设置了
绕过缓存、始终在线等特殊逻辑,或者存在更高优先级的规则强制从源站拉取资源,可能会出现清除后内容未更新的假象,实际是规则导致没有生成缓存 - 已缓存内容是Workers/Transform Rules生成的动态内容:这类内容的缓存键通常包含自定义标识,默认前缀清除无法匹配,需要用自定义缓存键清除功能(仅企业版支持)
- 跨区域缓存延迟:Cloudflare全球边缘节点的清除操作存在秒级到分钟级的同步延迟,刚提交清除操作就访问可能还命中旧缓存
排查解决思路
- 先校验前缀输入格式:确认输入没有带协议头,没有多余的通配符、斜杠后缀(如
www.myexamplesite.com/mypath/和www.myexamplesite.com/mypath是两个不同的前缀),路径大小写和实际访问路径完全一致 - 检查缓存键配置:在Cloudflare后台「缓存」-「缓存规则」页面查看是否有修改缓存键的规则,若存在可以临时关闭规则后重新测试清除,或者调整前缀匹配规则覆盖所有缓存键变体
- 先用单URL清除测试:找该路径下的一个具体资源URL,用自定义清除的「URL」选项清除,若清除后资源更新,说明是前缀匹配逻辑问题;若单URL清除也不生效,说明是规则层面的缓存绕过/回源问题
- 检查回源请求头:可以通过
curl -I https://www.myexamplesite.com/mypath/xxx查看响应头的CF-Cache-Status字段,若值为DYNAMIC、BYPASS说明该路径内容没有被Cloudflare缓存,此时清除操作自然不生效,需要调整缓存规则让内容正常缓存 - 拆分前缀范围:如果单条前缀匹配的资源量过大,可以拆分为多个更细粒度的前缀分别提交清除,避免因条目上限导致的清除失败
- 等待同步完成:提交清除操作后等待5-10分钟,再清理本地浏览器缓存后访问测试,排除节点同步延迟和本地缓存的干扰
内容的提问来源于stack exchange,提问作者User12838393
相关产品推荐
相关产品推荐

