1. 概述:为什么要对比 CDN 厂商
在选择 CDN 前,应明确目标(延迟低、带宽大、缓存命中率高或安全性强)。小分段:a) 明确业务类型(静态文件、视频、API);b) 列出待测厂商(如Akamai、Cloudflare、Fastly、阿里云、腾讯云);c) 定义关键指标(全球延迟、首字节时间、下载带宽、缓存命中率、SSL 分数、成本)。
2. 准备工作:账号、测试域名与工具
操作步骤:a) 在每个厂商开通免费试用或付费计划,并配置相同的测试域名或子域(例如 cdn-test-xxx.example.com);b) 准备相同的源站内容(如 10MB/100KB 的静态文件、一个动态 API 接口);c) 安装测试工具:curl、wget、ping、traceroute、httping、iperf3,以及注册 WebPageTest/GTmetrix、SSL Labs。注意记录各厂商的缓存配置参数与计费规则。
3. 基本连通性测试(DNS 与路由)
步骤与命令:a) DNS 解析:使用 dig 或 nslookup 验证 CNAME/解析记录(dig cdn-test.example.com +short);b) 检测多地解析:使用 dig @8.8.8.8 与 dig @1.1.1.1、或在线 DNSChecker 工具;c) 路由追踪:traceroute cdn-test.example.com 或 tracert 在 Windows 上,观察跳数与跨境跳点。小提示:高跳数或跨境绕行会增加延迟。
4. 延迟与首字节时间(TTFB)测试方法
详细命令:a) 使用 curl 测量 TTFB:curl -o /dev/null -s -w 'time_namelookup:%{time_namelookup}\ntime_connect:%{time_connect}\ntime_starttransfer:%{time_starttransfer}\ntime_total:%{time_total}\n' https://cdn-test.example.com/100kb.bin;b) 使用 httping(类似 ping 的 HTTP 工具):httping -c 10 -G -s https://cdn-test.example.com/;c) 在多个地区运行(本地、VPS、线上机房或 WebPageTest 的多个节点)并记录均值与方差。解释如何判断:time_starttransfer 越低越好。
5. 带宽与下载速度测试
实操步骤:a) 使用 curl 下载大文件并测量带宽:curl -o /dev/null -s -w '%{speed_download}\n' https://
cdn-test.example.com/10MB.bin;b) 在不同时间段重复测试以观察峰值与稳定性;c) 若能控制边缘机进行 iperf3 测试,使用 iperf3 在边缘节点与源站间测试吞吐,命令示例:iperf3 -c
-P 4 -t 60。记录并比较最大/平均带宽。
6. 缓存命中率与一致性测试
操作指南:a) 设置源站响应头 Cache-Control:max-age=3600 与不同路径测试命中;b) 使用 curl -I 查看响应头:curl -I https://cdn-test.example.com/100kb.bin,关注 X-Cache、Age、Via 等字段(不同厂商字段名不同,如 X-Cache: HIT/MISS);c) 强制刷新缓存并测试:先 curl 获取 MISS,然后再访问验证是否变为 HIT;d) 批量脚本:用循环在若干节点上并发请求,计算 HIT 比例以评估命中率。
7. 安全性与协议支持测试
检查步骤:a) SSL/TLS:在 SSL Labs(https://www.ssllabs.com/ssltest/)提交域名,查看等级与支持的协议;b) HTTP/2 与 QUIC:用 curl --http2 -I 或 curl --http3 测试,或查看浏览器开发者工具协议列;c) WAF 与 DDoS 防护:在厂商控制台查看是否启用,进行受控的渗透测试(遵守规则)或用安全评分工具检测。
8. 可用性、回源与故障恢复测试
测试步骤:a) 回源吞吐:模拟边缘不可用,观察回源流量与延迟;b) 故障演练:在非生产时间把边缘某节点 IP 屏蔽(或在控制台临时下线某 POP),检查流量如何回退与切换时间;c) 日志与监控:确保能导出边缘日志(访问日志、边缘错误),并设置告警阈值。
9. 成本对比与计费陷阱
对比要点:a) 理解计费项:带宽流出、请求数、SSL 证书、回源流量、地域差异费用;b) 用样例流量做计算:例如每月 10TB 出站、1亿次请求,分别带入各厂商单价计算月费;c) 注意隐藏费用:带宽峰值费用、多重计费区域、日志导出收费等。
10. 实战小结:如何根据测试结果选厂商
决策流程:a) 按优先级评分(延迟占40%、缓存命中30%、成本15%、安全15%)为每家厂商打分;b) 选出候选并做 1 个月试运行,观察真实流量下的表现;c) 结合支持响应速度与 SLA 决定最终签约。
11. Q1:我没有全球节点,如何做多地域测试?
可以用 VPS/云主机(如 AWS、GCP、阿里云)在不同机房起临时实例,或使用 WebPageTest、GTmetrix、CloudPing 等在线工具从世界各地节点发起请求;也可借助同事或第三方进行分布式脚本测试。
12. A1:如何判断缓存命中率是否真实?
看响应头的命中指示(如 X-Cache、Age),并在短时间内多次请求同一资源:第一次应为 MISS、随后的应为 HIT。用分布式脚本并统计 HIT/MISS 次数得出命中率,并结合厂商控制台提供的统计数据核对。
13. Q2:如何可靠比较 SSL/TLS 与协议支持?
使用 SSL Labs 全面测试得到 A+~F 等级、支持的协议与弱点报告;并用 curl 或浏览器验证 HTTP/2、HTTP/3 是否可用;同时检查证书自动更新、是否支持自定义证书与 TLS 版本控制。
14. A2:是否需要同时用多家 CDN 做主备?
对于高可用与避免供应商锁定的大型业务,推荐主备或多活策略(负载分配或按地域走不同厂商)。实施时需注意缓存一致性、DNS 路由策略与健康检查配置。
15. Q3:选择 CDN 后如何做长期监控?
部署持续监控:结合 Prometheus/Grafana/Kibana 收集边缘日志与指标,周期性(每日/每周)跑自动化性能脚本并告警,同时保留计费与 SLA 报表以判断长期性价比。
16. A3:开始试用建议的最小测试清单是什么?
试用建议至少包含:全球 5~10 个节点的延迟与 TTFB 测试、10MB 文件下载带宽、缓存 HIT/MISS 验证、安全 SSL 测试与一个故障切换演练,以及按月样例流量估算费用。