三个月前,我把公司跨境电商的静态资源站从某云CDN迁到了AWS CloudFront,原因很简单——客户一大半在北美和欧洲,而原国内CDN的海外节点要么绕路,要么高峰期丢包率能到5%,迁完测了一周,我心里其实挺复杂:CloudFront这东西,强是真强,但你要是把它当国内CDN使,能骂街骂到怀疑人生。
先看延迟,我分别在四个城市用拨测工具跑了48小时,取的是小文件(50KB)首包平均耗时:北京访问CloudFront东京节点约82ms,上海到新加坡约104ms,深圳到香港约48ms,但注意,这是绕到海外节点再回源到我这台位于广州的源站,如果对比国内CDN,以阿里云为例,同为广州源站,北京访问平均22ms,上海18ms,深圳12ms,差距有多大?体感上,CloudFront在深圳也快,但北京和上海明显能感觉到“数据出了趟国”,更有意思的是,直接访问CloudFront默认分配的 *.cloudfront.net 域名,在国内三个城市里有约30%的测试请求会超时,浏览器第一次打开得转圈5秒以上,后来我绑定了自己的域名,并开启SNI,超时率降到8%左右,但依然没法跟国内CDN那种“秒开”比,CloudFront的节点分布确实广,但国内链路到海外节点的物理距离和GFW的干扰是硬伤。
再看价格,这是最容易让人冲动下单又后悔的地方,CloudFront标准流量价格是0.085美元/GB,折合人民币约0.61元/GB,没有额外的HTTPS请求费,而阿里云CDN国内流量带价格为0.24元/GB,腾讯云更低,0.21元/GB,我公司一个月流量约2TB,CloudFront账单是180美元左右——约1300元人民币,同样的流量放在国内CDN,走流量包大约400元,差价三倍多,但别急,我算了一下海外访问部分:如果单独买国内CDN的海外流量包,价格一般在0.6元/GB上下,算下来和CloudFront差不多,而且国内CDN的海外节点数量和质量,说实话不如CloudFront稳定,所以关键是你的用户到底在哪,如果用户在国内,用CloudFront就是花三倍钱买罪受;如果用户分布全球,CloudFront这钱花得值,因为它的全球边缘节点数量比国内任何一家都多,而且与AWS源站之间的专线回源速度快得不行。

用CloudFront三个月,我把国内CDN的账单和延迟拉出来遛了遛
再说配置和体验,CloudFront的控制台第一次打开我以为是2008年的产品——没有批量刷新预热,没有实时日志分析,没有一键接入WAF,你得先去IAM里配权限,再去S3或ALB改源站配置,还要去ACM申请证书,最后再到CloudFront里写缓存行为规则,我花了一个下午才搞定一个带图片压缩和URL重写的简单环境,国内CDN呢?除了配置简单,还自带CC防护、鉴权、缓存命中率报表、一秒钟刷新几千条URL的功能,CloudFront也有Lambda@Edge,这个是真香,我用它实现了基于Device的自适应图片格式,以及按国家/地区返回不同语言版本,触发延迟只增加了3-5ms,国内CDN的EdgeFunctions也能做类似的,但部署流程和调试工具链上,CloudFront要成熟得多,只是,如果你不想折腾,CloudFront的学习曲线绝对够陡。
回源方面,CloudFront默认回源超时是30秒,可以调整,但如果你源站放在国内服务器,CloudFront边缘节点回源时会走普通公网,跨太平洋链路稳定性堪忧,我测过:源站在香港,新加坡节点回源平均45ms;源站放在广州,东京节点回源要慢15%,后来我直接把源站迁到了AWS的香港区域,费用涨了,但至少延迟稳定了,这算是CloudFront的隐形陷阱——它只管边缘加速,源站的“最后一公里”还得你自己解决。
最后说结论,不吹不黑,如果你是做纯国内业务——比如电商、资讯、视频——赶紧远离CloudFront,老老实实用国内CDN,便宜、快、省心,如果你做出海业务,比如独立站、SaaS、游戏更新分发,那CloudFront的全球覆盖、边缘计算和与AWS生态的整合能力,确实比国内CDN高出一截,但你要做好两个心理准备:一,账单开销比国内CDN高,尤其是域名管理费和请求费别忘记算;二,你得有心理预期去折腾控制台和配置,我现在的用法是:国内访问走腾讯云CDN,海外访问走CloudFront,两边同步,通过Route53的GeoDNS分流,三个月下来,整体成本比全站用国内CDN的海外版贵了约20%,但全球平均首包从1.2秒降到了0.4秒,值不值,看你自己的用户在哪,反正我下个季度还这么干。
发表评论