2024.8.20 更新
——-
之前的测试有很多问题,选取测试延迟的指标不是很好,选的测试网址也不同,忽略了下载时间,所以用generate_204重新测试,更新一下。
FRP就不重新测试了,CloudFlare Tunnel测试的是http generate_204且http回源,减少TLS相关时间的影响。

FRP + CDN

杭州服务器开启FRP,带宽只有5Mbps,通过CDN查看回源带宽都没有超过5Mbps。

访问测试

腾讯云CDN(ECDN也试了,效果差不多)

image.png

野生CDN

image.png

测试结果让我眼前一黑啊,腾讯云速度比不过野生CDN,好歹你腾讯云也是国内回源啊,野生CDN甚至是国外回源。【这里还发现了一个问题,无论那种CDN好像都没缓存webp文件,都设置了缓存规则】

今天看到文章Typecho (Handsome) 使用腾讯云CDN的配置教程(https) - 方舟基地 (wnark.com)

因为腾讯云CDN和小米路由器合作推出了家庭路由器作为CDN节点,部分机房也不是腾讯云自建机房,导致有些地区访问接入了腾讯云CDN的网站速度反而变慢。

我猜测也有这种可能,因为这种是下载慢,而延迟不是很高。

API测试(不可缓存的请求)

image.png

后面想起来可以用itdog测,这里没有改回去重测,就这样吧。

CloudFlare Tunnel + CDN

优选IP

使用的是:cloudflare.182682.xyz

image.png

腾讯云(ECDN)

image.png

腾讯云(CDN境外)

image.png

腾讯云(CDN境外筛选出新加坡+香港部分节点)

新加坡节点(170.187.231.227)移动速度贼快,简直是快乐老家

image.png

香港节点(43.152.23.34)联通挺快的

image.png

香港节点(203.205.136.235)电信算给出的里面比较好的了,联通速度也还行,移动没有新加坡节点快

image.png

小众CDN

image.png

峰回路转

突然想到之前试过用香港的虚拟主机反向代理,那延迟是真低啊,几乎在200ms左右,等等,香港。

Tunnel连接的不就是香港节点吗?

image.png

是不是走香港都会比较快呢?找到野生CDN里面的香港IP,解析一下,用itdog测试。

image.png

我靠,还真是,这是为什么呢?

原因

CloudFlare是anycast IP(任播IP),多个服务器共享同一个IP地址。通过任播IP,数据包会被路由到距离发送者最近的服务器,比如:百度有一个服务器在北京,一个服务器在广东,你在山东就连接到北京的服务器,你在江西就连接到广东的服务器。

image.png

但这都是理论上,实际上还是得看运营商怎么给你路由的,为了节省成本,运营商会选择最省钱的路由,而不是最快的路由。

山东移动实测:

image.png

数据会发往美国洛杉矶的数据中心,美国和香港可隔老远呢。

不仅是移动,其他运营商也是如此,用itdog测试一下。

image.png

都是发往美国的数据中心,而校园网则是发送到台湾和香港的数据中心。

image.png

突然就理解了为什么校园网访问CloudFlare网站的速度特别快了。(DNS解析出来的是下面这个IP,发送到香港的数据中心,上面那个只是为了测试一下同一个IP的校园网线路)

image.png

总结

这也是为什么腾讯云境内CDN反代CloudFlare访问一个简单的api接口都需要1s多的原因了。从境内CDN节点回源太慢了,数据发往美国的数据中心,美国再和香港通信获取数据。

换用境外CDN之后,使用香港IP,一下子速度就快了很多。但是腾讯云的香港也太拉跨了,延迟有点太高了,而且CDN不能指定区域,甚至买了亚太流量包也不能指定只用流量包里面的流量。。。

image.png

优选之后

野生的CDN

image.png

最后个人的推荐就是,CloudFlare Tunnel + 距离连接的数据中心最近的区域找一个质量好点CDN,避免绕路。(国内的CDN属实不好用,用境外也得备案,线路也稍微有点差🙌