国内外 CDN 方案对比
CDN 选型没有“最好”,只有“最适合”。同样是加速,海外业务和国内业务面对的完全是两套规则:国内要求备案、价格按带宽或流量算、节点覆盖更密;海外按流量计费、Cloudflare 这类厂商提供免费额度还自带安全能力。这篇把主流方案按全球、国内、特性三个维度拆开讲,最后给出按场景的选择建议。文中价格只做量级参考,实际以各厂商官网实时报价为准。
海外主流 CDN
| 厂商 | 免费额度 | 起步价 | 节点数 | 擅长场景 |
|---|---|---|---|---|
| Cloudflare | 有 | 免费 / Pro $20 | 330+ | 中小站点、安全 + CDN 一体 |
| Bunny CDN | 无 | 约 $1.40/TB | 119 | 便宜、按量付费 |
| AWS CloudFront | 无 | 约 $0.085/GB | 600+ | AWS 生态用户 |
| Fastly | 无 | 约 $0.12/GB | 150+ | 高性能、边缘计算 |
| Google Cloud CDN | 无 | 约 $0.08/GB | 200+ | GCP 用户 |
| Azure CDN | 无 | 约 $0.08/GB | 150+ | Microsoft/Azure 用户 |
国内 CDN
| 厂商 | 价格 | 国内节点数 | 擅长场景 |
|---|---|---|---|
| 阿里云 CDN | 约 $0.03/GB | 2800+ | 国内流量为主 |
| 腾讯云 CDN | 约 $0.03/GB | 2000+ | 国内性价比 |
| 又拍云 | 约 $0.02/GB | 100+ | 图片站 |
| 七牛云 | 约 $0.02/GB | 100+ | 媒体处理 |
功能对比
| 特性 | Cloudflare | Bunny CDN | AWS CloudFront |
|---|---|---|---|
| WAF | ✅ 自带 | ❌ | ✅ 额外收费 |
| DDoS 防护 | ✅ 不限量 | ✅ 基础 | ✅ Shield(贵) |
| 边缘计算 | ✅ Workers | ❌ | ✅ Lambda@Edge |
| 图片优化 | ✅ Polish | ✅ Optimizer | ✅ 额外收费 |
| 免费 SSL | ✅ | ✅ | ✅ ACM |
| HTTP/3 | ✅ | ✅ | ✅ |
| 国内访问 | ❌ 需备案 | ❌ | ✅ 国内区域 |
国内 CDN 的备案与计费细节
国内 CDN 和海外最大的差别在两条:备案和计费。备案方面,只要用国内厂商的 CDN 加速大陆访问,就必须先把域名在工信部完成 ICP 备案,这个过程通常要 1-3 周,新站要提前规划好时间。计费方面,国内厂商一般按带宽峰值或流量两种方式计费:带宽计费适合流量波动大、峰值明显的场景;流量计费适合总量可控、波动平缓的场景。不少厂商还提供月结 95 之类的弹性方案,小站通常直接选按流量更省心。
缓存命中率决定真实成本
CDN 的单价只是表象,真正决定成本的是缓存命中率。同样是每月 100GB 流量,命中率 95% 时回源只有 5GB;命中率 50% 时回源 50GB,源站带宽和数据库压力都会翻倍。想提升命中率,可以从三件事入手:给静态资源设置长缓存(比如 Cache-Control: max-age=31536000);把动态接口排除在缓存之外,避免“不可缓存却硬缓存”导致内容错乱;活动前用 CDN 自带的缓存预热,把热门资源提前推到边缘节点。
价格示例:每月 100GB 流量
| 厂商 | 预估月费 |
|---|---|
| Cloudflare(免费) | $0 |
| Bunny CDN | 约 $1.40 |
| AWS CloudFront | 约 $8.50 |
| Fastly | 约 $12.00 |
| 阿里云 CDN | 约 $3.00 |
按场景推荐
| 场景 | 推荐 | 理由 |
|---|---|---|
| 个人博客 | Cloudflare 免费版 | 免费、配置简单、自带安全 |
| 全球业务站 | Cloudflare Pro($20) | WAF + 性能 + DDoS |
| 大流量全球站 | Bunny CDN | 每 GB 成本低、计价简单 |
| 国内业务 | 阿里云 CDN | 大陆覆盖最好 |
| 深度使用 AWS | CloudFront | 与 AWS 生态深度集成 |
| 视频点播 | Bunny CDN | 大流量便宜 |
双线路方案
国内用户和海外用户都要覆盖时,最省心的做法是双线路:国内走阿里云 CDN,海外走 Cloudflare 或 Bunny,通过 DNS 智能解析按访客地理位置分流。
┌──────────────────┐
User DNS Query →│ Smart DNS (NS1/ │
│ Alibaba DNS) │
└────────┬─────────┘
│
┌───────────┴───────────┐
│ │
China User Global User
│ │
┌────────▼────────┐ ┌─────────▼────────┐
│ Alibaba Cloud │ │ Cloudflare / │
│ CDN │ │ Bunny CDN │
└─────────────────┘ └──────────────────┘
一个真实场景:同时服务国内和海外访客
假设你在 16IDC 发布了一套面向全球的建站模板,同时有国内和海外访客。海外访客走 Cloudflare 免费版;国内访客则面临一个硬约束——域名没有 ICP 备案时,无法用自己的域名在国内 CDN 上加速。这时有两个选择:一是为国内单独备案一个域名;二是把国内流量交给国内云厂商的 CDN。很多人在这一步忽略了备案,导致国内访问慢还以为是 CDN 没配好。选型前先把“要不要服务大陆用户”这个前提定下来,后面的方案会清晰很多。
怎么验证 CDN 真的加速了
上线后别只看“看起来挺快”,要量化对比。用 curl -w 看首字节时间,把 CDN 域名和源站直连放一起比;用在线测速工具对比不同地区节点;再看 CDN 后台的缓存命中率和回源数据。一个简单的命令行检查:
curl -s -o /dev/null -w "DNS: %{time_namelookup}s | 连接: %{time_connect}s | 首字节: %{time_starttransfer}s\n" https://你的域名/static/app.css
如果首字节时间明显低于源站直连,说明 CDN 生效;如果差别不大,多半是命中率低,或者流量根本没走到边缘节点。
常见误区
- 备案是硬门槛:用国内 CDN 加速面向大陆的域名必须 ICP 备案,这是前置条件,不是可选项;
- 免费套餐要看清限制:Cloudflare 免费版不限制流量但优化能力有限,图片站可能不够用;
- 不要只看单价:按量付费厂商可能有最低消费或按请求计费,小流量反而可能更贵。
参考:Cloudflare 定价 https://www.cloudflare.com/plans/ ,Bunny CDN 定价 https://bunny.net/pricing/ ,阿里云 CDN 文档 https://help.aliyun.com/zh/cdn/