我的小站以前一直都是托管在 github pages 上的,不得不说 github 提供的这个服务真是太棒了,git 管理、免费托管、支持自定义域名和 https…但是 github pages 在国内的访问速度实在是一般,jsdelivr 也偶尔抽风,于是想用 CDN 来加速。

其实一直都想用 cdn 加速,但问题是 cdn 要域名设置解析 CNAME 解析,之前我用裸域名作为网站地址不能设置 CNAME 解析,要用 CDN 就得把网站地址换成二级域名。小站加入了开往,申请了萌备,还有互换的友链…换网址是很麻烦的事,但考虑了很久,还是想解决 github pages 的访问速度问题,在这里也和各位说声对不起,当初建站的时候没考虑周全…

继续正文吧…

CDN 首先想到的是 cloudflare,业界标杆,提供了免费的 cdn 服务。但是 cloudflare 在国内表现并不好,有的同学用了之后反而更慢了,只能排除。之后把目光投向国内大厂,毕竟是为了加速嘛,国内服务器效果肯定是最好的,但是国内的服务都要求域名备案,只好放弃。最后用了 aws 的cloudfront。
cloudfront 是按量计费的,计费规则如下,价格非常便宜。同时 aws 1 年免费试用也包含了部分 cloudfront 流量

Pricing

下面是配置过程:

aws 面板里进入 cloudfront ,创建一个 Distribution。设置项有很多,不过只需要设置几个地方就够了,其余选项保持默认就好。

Origin domain:静态源站地址,我使用 github pages 作为源站,设置之前要取消 github pages 的自定义域名设置

源站地址设置

Name: 该 cloudfront 分发的名字

然后设置把 HTTP 重定向至 HTTPS:

重定向设置

缓存策略:这里按情况设置。cloudfront 默认是缓存 24 个小时。对于静态网站这个时间太长了,选择 Legacy cache settings > Object caching > Customize 更改 Default TTL,单位为秒,比如设置成 7200 就代表两小时刷新一次

更改缓存有效期

继续往下,来到 Settings 页

Price class:付费等级,选择启用哪些节点,价格有差异,因为 cloudfront 收费很便宜,没有特殊需求的话选择使用全部节点就好(默认)

重点来了,Alternate domain name (CNAME):替代访问域名,填网站的地址,使用这个地址访问将经过 CDN 加速。

Alternate domain

Custom SSL certificate:自定义 SSL 证书。AWS 提供免费的公共 SSL 证书,推荐使用,点击下面的 Request certificate 跳转到证书申请页面,只需验证域名的所有权就行了,建议用 CNAME 验证,以后证书到期时 AWS 会自动检查 CNAME 记录并续期。不过 AWS 的公共证书不提供下载,只能给 AWS 的云服务用。

选择 SSL 证书

其余设置保持默认就行了,检查完了之后点击 Create distribution 完成设置,之后会开始部署。

部署时间比较长,注意如果更改了设置要重新部署,所以以后改设置 save 之前最好检查一遍…

分发域名

Distribution domain name 就是 CDN 访问地址,在 DNS 服务商那里把之前填的 Alternate domain name 设置 CNAME 解析到这个域名,等待 cloudfront 部署完成,访问网站就可以享受 CDN 加速了!