现象:明明接入了 CDN,大陆访问却变慢了
我们监测到部分将根域名(@ 主机记录)接入 QEdgeCDN 的用户,在使用 Cloudflare 作为 DNS 解析服务商时,出现了中国大陆地区访问速度变慢、或被调度至海外节点的现象。
如果你的站点符合以下两个条件,大概率就是本文描述的问题:
- 业务部署在根域名上(
example.com而不是www.example.com); - 域名的 DNS 托管在 Cloudflare。
技术原因:CNAME Flattening 抹掉了用户位置
由于 RFC 标准限制,根域名 @ 通常不支持直接设置 CNAME 记录。Cloudflare 为了绕开这一限制,使用了 "CNAME Flattening"(CNAME 拉平)技术:
- 用户访问
example.com,Local DNS 向 Cloudflare 的权威 DNS 发起查询; - Cloudflare 的权威服务器代替用户的 Local DNS,向 QEdgeCDN 的调度系统发起递归查询;
- 调度系统看到的请求来源,是 Cloudflare 的递归节点,而不是真实用户。
问题就出在第 2 步:Cloudflare 的递归查询节点分布于海外,且未透传客户端所在的 EDNS Client Subnet(ECS)地理信息。QEdgeCDN 的智能调度系统因此将请求来源误判为海外用户, 返回了物理距离较远的海外节点 IP——大陆用户就这样被"调"去了海外。
简单说:不是节点变慢了,而是调度系统"看不见"真实用户在哪,只能按 Cloudflare 海外递归节点的位置就近分配。
解决方案
方案一:更换境内 DNS 服务商(推荐)
将域名的 DNS 托管迁移至支持国内线路智能调度的服务商,如阿里云 DNS、DNSPod 等。 这些服务商对国内地域的 CNAME 解析支持更为精准,能确保国内用户被准确调度至最近的 CDN 节点。
方案二:改用 www 子域名部署 + 301 重定向
如果必须保留 Cloudflare 作为 DNS 服务商,建议不要在根域名(@)上直接部署业务:
- 将业务内容部署到
www.example.com等子域名上,并将该子域名 CNAME 到 QEdgeCDN 分配的接入点; - 使用 Cloudflare 的 Page Rules 功能,将根域名
example.com设置 301 重定向到www.example.com。
www 子域名支持标准的 CNAME 解析,不会触发拉平机制,DNS 请求会直接到达 QEdgeCDN 的调度系统,从而避免调度误判。
两个方案怎么选?
| 方案 | 适合场景 | 注意事项 |
|---|---|---|
| 迁移到境内 DNS | 可以更换 DNS 托管、希望根域名直接提供服务 | 迁移 NS 记录需等待全球生效(最长 48 小时) |
| www + 301 重定向 | 依赖 Cloudflare 的其他功能,不便迁移 | SEO 上以 www 为规范地址,需同步更新站内链接与 canonical |
配置过程中有任何疑问,欢迎通过控制台工单系统联系我们获取技术支持。想了解 CNAME 的更多细节,可以继续阅读《CNAME 解析详解》。