我有几个用 WordPress+Woocommerce 搭建的外贸网店,为了给全球各地的访问者更好的访问速度,使用了 StackPath CDN 加速服务。也不知道到底是不是因为美国国内疫情的原因,StackPath 这个月连续两次翻车:上次是域名 https 证书出问题,这次是无缘无故不能访问,因为注册过国内的七牛,腾讯云,阿里云账号,早就了解到国内也有针对国外的 CDN 加速服务,这次上车的对象是阿里云国际。
阿里云国际(美国)账号注册及验证
其实我知道国内早就有人用阿里云的国际站账号,其香港和新加坡的 CN2 线路非常优秀,延迟低,适合在国内免备案搭建博客和折腾。最早只能申请香港手机号码和 Paypal 香港账户(绕过阿里云国际不接受国内发行的信用卡的限制)来注册阿里云国际(香港)的账户,并购买 VPS 。
现在终于不用这么麻烦了,至少不需要绕道注册 Paypal 非大陆账号了,因为阿里云国际所有国家站点自2020年3月起开始全面支持国内发行的带有 VISA/MasterCard 标志的单币/双币信用卡了。
我注册的是阿里云国际(美国区)的账号,账号注册过程就不过多赘述了。我添加的是招商银行发行的单币种 VISA 信用卡,信用卡添加之后需要验证,验证之后一切正常。不过,注册美区账号还是需要美国手机号码,我用的是 Google Voice 。
阿里云 CDN 和国外 CDN 的区别
到目前为止,我用过的国外 CDN 有 keycdn 以及 StackPath ,这两个 CDN 的设计思路和阿里云貌似有点不同。拿 keycdn 为例,其设计初衷主要是为了加速静态文件,比如图片,css 等文件,而阿里云貌似是为了加速整站而设计,这点有点类似 Cloudflare (当然 StackPath 也可以加速整站)。
反正我自己是这么理解的,也或许是我在没有看帮助页面的情况下,对阿里云 CDN 添加页面的一些名词的理解存在偏差。Google 到的阿里云 WordPress 加速教程都是加速整站,其实阿里云 CDN 也可以用来分发静态文件,区别只是和源站的接入方式。
之前由于错误的理解,导致今天才开始使用阿里 CDN 。这件事情告诉我们,以后一定要看一下产品文档。
使用阿里云 CDN 分发 WordPress 静态文件
刚刚已经说过,国内博客作者写的阿里云 CDN 教程都是如何加速整站的,由于国内的 VPS 才 1M 的小水管,很显然使用 CDN 可以大幅改善在国内的访问速度,因为被 CDN 缓存的文件在分发到访问者的浏览器的时候是不限制宽带的。
而我的 Woocommerce 外贸网店由于使用了 Cloudflare 主要是他的 WAF 功能,导致和阿里云 CDN 在使用整站加速在接入的时候和 Cloudflare 存在冲突,整站加速需要主域名 CNAME 到阿里云的加速服务器上,就不能用 Cloudflare 的 WAF 了。
StackPath 和 keycdn 一开始问你要的是源站域名,之后再给你生成一个 CDN 域名,接着你就可以用 WordPress 插件替换源代码中的原始静态文件域名为 CDN 的域名。
阿里云上述添加加速域名的页面曾经让我犯糊涂,我以前理解成了源站域名(主域名)。看了文档才知道原来源站域名可以是加速域名(主域名),但是这样的话主域名必须 cname 到阿里云给你分配的域名上,就不能接入 Cloudflare 了。加速域名也可以是源站域名的二级域名,这样就可以用 WordPress 插件加速静态文件了。
如图所示,我给静态文件分了个 assets.pengjiayou.com 的二级域名,成功添加域名之后,添加 DNS 解析记录,把 “assets” 添加一条 cname 记录,指向 “assets.pengjiayou.com.a.lahuashanbx.com” 等待生效即可。
等阿里云检测到这条 cname 记录生效之后,就可以申请免费的 https 证书了。因为我主站使用了 https ,所以如果 CDN 加速域名不使用 https ,浏览器会提示不安全。
在 https 证书申请过程中,我们有必要设置一下回源配置。
回源 HOST 我使用了源站域名,当然了,如果你加速整站的话,可以用服务器的 IP 地址。回源协议我选了“跟随”,回源 SNI 是也要配置下,如图所示。设置成功之后 CDN 服务器才能正确从源站缓存内容。
接下来进行缓存设置,对于 WordPress 来说,文章中的各种图片,主题中的各种图片都在 wp-content 目录,所以只需要缓存这个目录 30 天即可,意思是 CDN 服务器缓存这个目录的文件 30 天,30天内不需要重复从源服务器下载,而是直接从阿里云服务器下载,节省流量。
对于 css,js 这类文件,别人的教程里面是缓存 10 天,因为这些文件也在 wp-content 目录中,所以给个更高点的权重才行。
因为我们不是整站加速,所以不需要排除 wp-admin 目录,否则,你可以参考这篇教程完成设置。
其它方面,开启智能压缩和 Brotli 压缩,有助于提高性能。到此 CDN 的设置基本就结束了。
接下来,可以使用类似 CDN Enabler 之类的 WordPress 插件,或者 Cache 类插件也有类似的功能,把 WordPress 源代码中静态文件的 url 替换成 cdn 的 url ,就大功告成了!
使用阿里云 CDN 遇到的问题
国外的 CDN 比如 StackPath 支持 Canonical Header,阿里云 CDN 好像没有这个功能,据说对 SEO 不利。
补充:购买 CDN 资源包
阿里云按下行流量和 https 请求数支付费用,目前阿里云有年付的 CDN 资源包,比如我的网站北美和欧洲的流量最高,一个 100G 的下行流量包年费只要 $7 ,相对于 StackPath 最低 $10 月付来说,可谓是相当良心了。
总结
使用国外的 CDN 这么多年,现在才发现其实国外的月亮不一定更圆。国内的电信基础设施在全世界都是领先的,疫情期间不知多少人宅在家里,多少人上网课,网速还是那么流畅。国内 IT 开发者也很厉害,他们支持了多少全世界排名前几十的网站,比很多国家和地区强了不知多少倍。
我不清楚 StackPath 到底多少用户,也不知道疫情到底对他们的服务造成何种影响,反正我是仍受不了他们的服务了。换上阿里云 CDN 之后,感觉访问速度提高了。正如刚刚所说,国内的码农技术上并不差,相信马云在国外也有能力租用最好的电信线路。试试证明阿里云实力绝对碾压 StackPath 。
我觉得我很长时间内会赖在阿里云国际不走了。
Leave a Reply