引言
书接上回,基于hexo搭建了自己的博客之后,有点强迫症的我还是想提升下网站的访问速度,Github Pages的延迟还是很容易被感知到的。刚好呢最近我在Linxdo论坛上刷到了基于优选域名加速网站的帖子,没看太懂,凑着这个机会好好钻研一下。
本文观点未必正确
局限
先说局限,我个人理解是
-
优选是对CF和Vercel这种国外云服务提供商在中国服务能力不足的一种弥补
-
有点像是双层DNS,但是第一层无条件相信第二层传回来的DNS结果

原理
引自kimi:
把 Cloudflare 想成一座“大机场”,里面有好多登机口(节点)。
正常流程:
- 你先问机场总台(Cloudflare DNS):“我该去哪个登机口?”
- 总台随便给你一个,有时远、有时近。
- 你飞过去,飞机再回头把你的行李(网页)带给你。
但在中国,总台给的登机口常常“绕远路”,飞机就飞得慢。
于是有人想了个小游戏:
自己先派很多小侦察兵(探测程序)去把“每个登机口到你的距离”量一遍,找出最近、最不堵的那个口。
然后把“最近口”的门牌号写在一块小黑板(“优选域名”)上,告诉你:
“别去问总台啦,直接看小黑板,走这个口最快!”
如何设置
一个详细的操作流程参见:利用优选 CNAME 域名提高网站访问速度
需要注意的是:
-
优选域名不能随便设置,针对不同的厂商不能用同一个优选域名
-
Github Pages不支持使用优选域名,设置优选需要对域名解析具有绝对的控制权,可以将github项目通过Vercel部署,再使用优选域名加速(操作一遍这个过程,其实就理解了优选工作的原理)
GitHub Pages 自带 CDN 且禁止你把流量先引到第三方 IP,用“优选域名”等于把钥匙插到别人家的锁,门根本打不开。
- GitHub Pages 的“门牌号”是固定的
官方只认185.199.108.153等四组 IP,全世界都一样,不会给你“就近登机口”。 - GitHub 不让改 DNS 解析
它强制把你的域名 CNAME 到xxx.github.io,再由 GitHub 自己去决定哪个边缘节点给你内容。
你想把 A 记录改成“优选 IP”?
→ GitHub 会立刻发邮件警告,超 24 h 不改正就停站。 - 就算你强行 HOSTS 指向“优选 IP”,也拿不到网页
因为 GitHub 的 Web 服务器靠 虚拟主机(SNI) 识别域名,
你把请求发到任意随机 IP,服务器不知道你要哪个站,直接返回 404 或 443 握手失败。 - Pages 已经自带“小飞机”
GitHub 背后其实是 Fastly CDN,全球节点比 Cloudflare 还多,
国内虽然不快,但你再插一脚反而破坏证书链,得不偿失。
- GitHub Pages 的“门牌号”是固定的
2025.11.16日补充:
如何对Cloudflare Pages的访问进行优选加速:Cloudflare Workers & Pages 优选域名设置 | Onew`s Blog
参考之前的教程,多数为设置域名回源的方法,但是由于我最初的Cloudflare Pages托管在官方的CDN下面,导致设置之后会出现403的报错。(可能对于非托管在cloudflare的其他服务上述方法可以行得通的)
解决方案:经过摸索,只需将pages中的custom domain设置成非托管在cloudflare的域名即可,同时将域名的国内访问CNAME设置成优选域名。



实现细节
摘自kimi:
“优选域名”能正常工作的核心原理是 Anycast IP 本身属于 Cloudflare,只要 TCP 握手能到达,Cloudflare 边缘节点就会用 SNI(Server Name Indication,TLS 扩展字段) 里的域名去匹配后台配置。