Cloudflare 的全球边缘网络覆盖 300+ 城市,但中国大陆境内的节点策略有其特殊性:免费计划不保证中国加速、Pro 计划默认使用日本/香港节点回源、Enterprise 计划才有专门的 China Network 接入。 对于面向中国大陆用户的站点,正确配置 Cloudflare 的加速策略是提升访问体验的关键。本文基于实际测试数据,从不同计划层级出发,给出系统性的国内 CDN 优化方案。
一、Cloudflare 在中国大陆的网络现状
1.1 节点分布与运营商合作
| 维度 | 免费/Pro 计划 | Enterprise 计划(China Network) |
|---|---|---|
| 中国大陆 PoP | 无自主节点,通过合作伙伴网络接入 | 有专门的中国大陆边缘节点 |
| 请求路由 | 通常路由到香港/日本/新加坡 | 直接路由到中国大陆节点 |
| 延迟基准 | 50-150ms(上海→香港) | < 30ms(省内) |
| 运营商覆盖 | 依赖国际出口带宽 | 与中国电信/联通/移动直连 |
| ICP 备案 | 不要求 | 要求域名 ICP 备案 |
| 适用对象 | 个人/小型站点 | 有中国大陆业务的企业 |
1.2 不同计划的实际表现
| 计划 | 中国大陆延迟 | 可用性 | 适用场景 |
|---|---|---|---|
| Free | 较慢(120-200ms) | 基本可用 | 面向海外用户的个人站 |
| Pro ($20/月) | 中等(80-150ms) | 良好 | 有少量中国用户的博客/SaaS |
| Business ($200/月) | 较好(50-100ms) | 好 | 中小型企业官网 |
| Enterprise | 快(< 50ms) | 优秀 | 有中国大陆核心用户群 |
对于绝大多数面向中国大陆用户的站点,Pro/Business 计划 + 正确的缓存优化配置 已经可以显著提升体验。China Network(Enterprise)更适合延迟敏感的大型电商/SaaS。
1.3 为什么 Cloudflare 在中国大陆的延迟不如阿里云 CDN?
- 网络架构差异:阿里云在中国大陆有自建节点(200+ POP),Cloudflare 依赖国际出口延迟
- 运营商互联:Cloudflare 与中国大陆的运营商互联主要在香港/日本出口点
- ICP 政策:中国大陆 CDN 节点要求 ICP 备案,增加合规门槛
- DNS 解析:部分地区 DNS 解析可能返回海外 IP
二、免费/Pro 计划的优化方案
2.1 启用 DNS CNAME Flattening(根域名加速)
登录 Cloudflare Dashboard → DNS → Settings
→ CNAME Flattening: Enable for all CNAME records
CNAME Flattening 让根域名(如 example.com)可以使用 CNAME 记录,直接享受 CDN 加速,避免多一次 DNS 查询。
2.2 开启 Auto Minify 与 Brotli
Speed → Optimization → Auto Minify:
✅ JavaScript
✅ CSS
✅ HTML
Speed → Optimization → Content Optimization:
✅ Brotli (on by default)
Brotli 压缩率比 Gzip 高 20-25%,对于文本型资源(JS/CSS/HTML)效果显著。
2.3 配置最佳缓存规则
Caching → Configuration:
Caching Level: Standard
Browser Cache TTL: 1 month (for static assets)
Edge Cache TTL: 1 month
Caching → Rules → Create Page Rule:
规则 1:静态资源长期缓存
URL: *example.com/*.{css,js,png,jpg,jpeg,gif,webp,svg,woff2}
设置:
- Cache Level: Cache Everything
- Edge Cache TTL: 1 month
- Browser Cache TTL: 1 month
规则 2:HTML 页面短期缓存(ISR 兼容)
URL: *example.com/*
设置:
- Cache Level: Cache Everything
- Edge Cache TTL: 5 minutes
- Browser Cache TTL: 5 minutes
规则 3:API 不缓存
URL: *example.com/api/*
设置:
- Cache Level: Bypass
- Disable Apps
2.4 启用 Always Online™
Speed → Optimization → Always Online™: On
当源站不可用时,Cloudflare 展示缓存的静态页面副本,保证基础访问能力。
2.5 开启 HTTP/2 + HTTP/3 (QUIC)
Network:
✅ HTTP/2 to Origin
✅ HTTP/3 (QUIC) (with QUIC)
HTTP/3 基于 QUIC 协议,减少了 TCP 握手的延迟,在弱网环境下表现更好。
2.6 启用 Early Hints
Speed → Optimization → Early Hints: On
Early Hints(HTTP 103)在完整响应准备好之前,提前发送 Link 头让浏览器开始加载关键资源,可提升 LCP 100-300ms。
三、Pro 计划进阶优化
3.1 Argo Smart Routing(付费功能)
Argo 使用 Cloudflare 的私有骨干网路由流量,避开拥堵的公共互联网:
Speed → Optimization → Argo Smart Routing: On ($5/月 + $0.10/GB)
效果:延迟降低约 30%,丢包率大幅降低。对于国际流量(包括中国大陆用户访问海外源站)效果显著。
3.2 Polish(图片优化)
Speed → Optimization → Polish: On
Lossy 或 Lossless 压缩
WebP: On
自动压缩和转码图片为 WebP/AVIF,减少图片体积 30-80%。
3.3 Auto Minify + Rocket Loader™
Speed → Optimization → Rocket Loader™: Automatic
Rocket Loader 利用 JavaScript 的异步加载顺序优化非关键脚本执行,减少 FID(首次输入延迟)。
⚠️ 注意:Rocket Loader 可能与某些前端框架(如 React/Vue)冲突,如果页面交互异常请关闭。
3.4 配置 Tiered Caching
Caching → Configuration → Tiered Caching: On
Tiered Caching 让 Cloudflare 的上层数据中心(Upper-tier)缓存内容,减少源站请求。对于中国大陆用户特别有效:请求先到香港上层节点查找缓存,未命中才回源到美国/欧洲服务器。
四、中国大陆混用方案:Cloudflare + 国内 CDN
如果你的核心用户在中国大陆,但不想完全放弃 Cloudflare 的安全/分析能力,可以采用分层架构。
4.1 架构方案
用户(中国)
↓ DNS 智能解析
阿里云/腾讯云 CDN(中国大陆节点) ← 国内备案域名
↑ 回源
源站(如 Vercel/Render/AWS)
↓ 主域名走 Cloudflare(海外用户)
Cloudflare CDN(全球 + 安全/WAF)← 主域名(无需备案)
4.2 实现方式
方式一:子域名分离
# 主域名:走 Cloudflare(面向海外)
example.com CNAME example.vercel.app Proxied (orange cloud)
# 国内专用子域名:走阿里云 CDN(面向中国大陆)
cn.example.com CNAME example.aliyun.com DNS only (grey cloud)
前端根据用户 IP/地区自动切换域名:
const API_BASE = navigator.language.startsWith('zh') && isInChina()
? 'https://cn.example.com'
: 'https://example.com';
方式二:DNS 智能解析(分线路)
使用阿里云 DNS/腾讯云 DNSPod,按线路解析:
线路: 默认 → CNAME: example.com.cdn.cloudflare.net
线路: 中国联通 → CNAME: unicom.example.com.aliyun.com
线路: 中国电信 → CNAME: telecom.example.com.aliyun.com
线路: 中国移动 → CNAME: mobile.example.com.aliyun.com
方式三:Cloudflare Load Balancer + 地理路由
DNS → Cloudflare Load Balancer
├── 用户来自中国 → 国内 CDN
├── 用户来自海外 → Cloudflare CDN
五、性能实测基准
5.1 测试环境
- 测试站点:Next.js SSG 博客,首页 150KB HTML + 500KB JS/CSS + 1.5MB images
- 测试工具:Pingdom、GTmetrix(上海节点)、WebPageTest
- DNS 解析:Cloudflare(DNS-only 托管在 Cloudflare)
5.2 不同配置对比(上海节点访问)
| 配置 | TTFB | LCP | FCP | 总加载时间 |
|---|---|---|---|---|
| 无 CDN(直连源站美国) | 800ms | 3.2s | 2.1s | 5.5s |
| Cloudflare Free | 200ms | 1.8s | 0.9s | 3.2s |
| Cloudflare Free + 缓存优化 | 120ms | 1.4s | 0.6s | 2.3s |
| Cloudflare Pro + Argo + Polish | 80ms | 1.1s | 0.5s | 1.8s |
| 阿里云 CDN(中国大陆) | 30ms | 0.8s | 0.3s | 1.2s |
结论:
- Cloudflare Free + 合理缓存 = 已经比直连源站快 2 倍以上
- Cloudflare Pro($20/月 + Argo)= 可接受的中国大陆体验
- 中国大陆核心用户 → 阿里云/腾讯云 CDN 仍是延迟最优解
5.3 不同城市延迟测试
| 城市 | Cloudflare Free | Cloudflare Pro+Argo | 阿里云 CDN |
|---|---|---|---|
| 北京 | 150ms | 80ms | 15ms |
| 上海 | 120ms | 75ms | 12ms |
| 广州 | 180ms | 95ms | 18ms |
| 成都 | 200ms | 110ms | 25ms |
| 海外(洛杉矶) | 25ms | 20ms | 200ms |
六、DNS 解析优化
6.1 使用 1.1.1.1 DNS
Cloudflare DNS: 1.1.1.1 (主) / 1.0.0.1 (备)
1.1.1.1 是全球最快的公共 DNS,解析速度 < 10ms,在中国大陆也有较好可用性。
6.2 减少 CNAME 链长度
❌ 避免: example.com → CNAME → CNAME → CNAME → 源站
✅ 推荐: example.com → CNAME Cloudflare → 源站
每多一层 CNAME 增加 10-30ms 解析延迟。
6.3 启用 DNSSEC
DNS → DNSSEC: Enable
防止 DNS 劫持与缓存投毒攻击,对高安全要求站点建议开启。
七、常见问题排查
DNS 解析返回海外 IP,中国大陆访问慢
检查步骤:
dig example.com +trace— 查看整个 DNS 解析链nslookup example.com 1.1.1.1— 用 Cloudflare DNS 解析看结果- 检查 Cloudflare 的 Anycast IP(如 104.21.x.x / 172.67.x.x)是否返回
- 如果解析到日本/美国 IP → 这是正常行为(无中国大陆节点),考虑升级到 Enterprise 或混用国内 CDN
开启 Cloudflare 后网站无法访问
排查:
- SSL/TLS 加密模式是否为 “Flexible”?如果是,改为 “Full (strict)”
- DNS 记录是否指向正确源站?检查 A/CNAME 记录
- 源站是否开启了 IP 白名单?需要放行 Cloudflare IP 段
- 是否自定义防火墙规则拦截了 Cloudflare 的请求?
缓存不生效,每次都回源
排查:
- 检查
Cache-Control响应头:源站是否设置了no-cache/no-store? - Cloudflare Page Rules 是否正确匹配 URL?
- 浏览器 DevTools → Network → 响应头中查看
CF-Cache-Status:HIT:命中缓存 ✅MISS:未命中(首次请求或缓存过期)DYNAMIC:Cloudflare 不缓存(HTML 默认不缓存,需配置 Page Rule)EXPIRED:缓存已过期,正在重新获取
静态资源(JS/CSS)更新后用户仍看到旧版本
解决:
- 在 URL 中添加版本哈希:
main.a1b2c3.js(构建工具如 Vite/Webpack 自动生成) - 使用 Cloudflare Purge Cache 功能手动刷新:
Caching → Configuration → Purge Everything - 或在部署时通过 API 自动刷新:
curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/purge_cache" \ -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/json" \ --data '{"purge_everything":true}'
八、方案决策总结
| 场景 | 推荐方案 | 估计月费 |
|---|---|---|
| 纯海外用户站点 | Cloudflare Free + 基础缓存 | $0 |
| 少量中国大陆用户 | Cloudflare Pro ($20) + Argo ($5) + Polish | ~$25 |
| 大量中国大陆用户 | Cloudflare(安全/WAF) + 阿里云 CDN(国内加速) | $20 + 阿里云按量 |
| 中国大陆为主、合规要求高 | Enterprise + China Network | $5000+/月 |
| 面向全球 + 中国大陆同等重要 | Load Balancer(地理路由)+ Cloudflare + 阿里云 CDN | 按量计费 |
常见问题(FAQ)
Cloudflare Free 在中国大陆能用吗?
能用,但加速效果有限。免费计划没有中国大陆节点,请求通常被路由到香港/日本,延迟 100-200ms。适合面向海外用户的站点,或中国大陆用户不核心的项目。
Cloudflare Pro 和 Business 在中国大陆有什么区别?
两者在中国大陆的性能差异不大,都没有专门的 China Network。升级的价值主要在:
- Pro($20/月):Polish 图片优化、WAF 规则(有限制)、100 个 Page Rules
- Business($200/月):更多 WAF 规则、自定义 SSL 证书、优先支持
如果只为中国大陆加速,升级到 Pro 已经足够。
为什么 Cloudflare 在中国大陆的延迟不如预期?
中国大陆的网络环境特殊:国际出口带宽有限、DNS 解析策略、运营商路由偏好。Cloudflare 的延迟通常比阿里云/腾讯云慢 2-3 倍。对于中国大陆为核心市场的站点,建议混用国内 CDN。
Argo Smart Routing 对中国的加速明显吗?
对于中国大陆用户访问海外源站,Argo 有一定效果(减少 10-30ms),因为它绕开了拥堵的公网路径。但如果源站本身就在中国大陆,Argo 帮助不大。
开启 Cloudflare 后 HTTPS 证书有问题?
检查 SSL/TLS 加密模式:
Flexible:Cloudflare 到用户用 HTTPS,到源站用 HTTP(不安全,不推荐)Full:两端都用 HTTPS,但不验证源站证书Full (strict):两端 HTTPS + 验证源站证书(推荐)Strict (SSL-Only origin pull):最高安全级别
如果源站没有有效 HTTPS 证书,先用 Flexible,然后尽快为源站配置证书。
相关阅读
- Cloudflare 详解:从 CDN 到全球边缘计算平台
- Cloudflare Pages 完全指南:边缘托管、Functions 与全栈架构
- Cloudflare Workers 入门实战:路由、KV 与缓存 API
- Cloudflare 定价与成本详解
- Vercel 与 Netlify、Render、Railway、Cloudflare Pages 对比
- Vercel 国内访问优化指南
- Cloudflare 专题导航
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。