You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于国家/地区的Cloudflare缓存配置问题咨询

解决Cloudflare按国家/地区缓存差异化内容的方案

以下是几个经过验证的可行方案,帮你解决Cloudflare缓存导致地区内容错误的问题:

1. 自定义缓存键结合地区变量

在Cloudflare的「缓存规则」中创建自定义缓存键,将Cloudflare提供的cf-ipcountry变量(用户所在国家的两位代码,如US、CN)加入缓存键的组成中。

  • 示例缓存键配置:{uri}{query_string}{cf-ipcountry}
  • 原理:不同国家的用户访问同一URL时,会生成唯一的缓存键,Cloudflare会为每个地区维护独立的缓存副本。
  • 前提:确保你的源站能读取Cloudflare传递的cf-ipcountry请求头,并根据该头返回对应地区的内容(启用Cloudflare后,服务器无法直接获取用户真实IP,必须依赖这个头判断地区)。

2. 启用Cloudflare原生地域感知缓存

这是更省心的原生方案:

  1. 进入Cloudflare控制台的「缓存」→「缓存规则」
  2. 创建新规则,指定需要差异化缓存的路径(如*example.com/*)
  3. 在「缓存键完整性」选项中选择「包含国家/地区」
  4. 保存规则后,Cloudflare会自动为每个国家/地区生成独立的缓存,无需手动拼接缓存键。

3. 验证源站的地区判断逻辑

很多时候问题出在源站而非Cloudflare:

  • 确认服务器能接收到cf-ipcountry请求头,可通过在页面输出该头的值来测试
  • 用curl -H "CF-IPCountry: CN" https://你的域名模拟不同地区的请求,检查返回内容是否符合预期
  • 避免依赖用户真实IP判断地区(因为Cloudflare代理后,服务器拿到的是Cloudflare的节点IP)

4. 针对动态内容排除缓存

如果部分页面是实时动态的(如用户个性化内容),可在缓存规则中设置这些路径的「缓存级别」为「不缓存」,或设置「TTL」为0,确保每次请求都回源获取正确内容。

内容的提问来源于stack exchange,提问作者Павел Иванов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:40:35