Replies: 1 comment 3 replies
-
Cloudflare CDN 的总体过程是:
如果 Cloudflare Anycast IP 节点 有缓存,则会直接返回给访客,如果没有缓存,则会从上游寻找,有的话再返回给 Anycast IP 节点,然后再返回给访客,如果上游也没有,就会去网站源服务器上访问(即回源)再一层层返回给访客。 对于 CDN 来说 Anycast IP 不是最好的方案,但却是适合大部分人的方案(特别是在国内国外网络环境迥异的情况下来看),国外大部分地区访问 Cloudflare CDN 的网站,都会 Anycast 到当地节点(延迟可能就 几ms),而网站往往都少不了缓存,按特定条件把缓存存储在各个边缘节点上(比如某个网站的访客大都是美国的,那么该网站的缓存基本都处于美国的边缘节点上),确实可以显著提高网站访问速度。 不过国内因为不可抗力被 Cloudflare CDN(其他国际 CDN 都差不多这样)特殊对待,导致 Anycast 节点默认都分配到欧美了(一些移动用户可能会分配到香港),这就失去了 Anycast 技术的最大优势,才衍生出了本项目这种自选优选的玩法,国外基本上就用不上 CFST 。。。
只有没有缓存的情况下,Cloudflare CDN 才会完整的走一遍上面的回源流程环节,即最终延迟就是:
但如果你要测试完整延迟,理论上你只需要找个不会被缓存的小文件(或者 CF 里设置不缓存),或者下载测速地址随便加上个参数什么的(但可能还是需要在 CF 里设置缓存策略,来确保 CF 不会忽略地址参数去缓存),然后直接去访问这个小文件(文件要小就是为了尽量避免文件大小影响测试结果),看总消耗时间是多少,这个时间应该算是最契合你要去的 CFST 的 HTTPing 只获取了头部(Header),我也不确定只获取头部是否能反映完整延迟,建议你用 curl 来测试: 这个命令就是和 HTTPing 一样的原理,
而这个命令,则是获取完整下载测速地址的文件(
你可以对比一下两者的结果,理论上后者因为传输内容更多,总耗时会更长一些,但如果你的文件很小的话,那么差别应该也不会那么大,但这种测试结果也有缺点,那就是 HTTP 测试本身因为环节比较多,因此受干扰的因素变量也会多,导致最终多次的测试结果可能都不太一样。 你要确保每次测试时的下载测速地址文件都没有被 Cloudflare 缓存,这样测速结果才有参考价值。 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
原来测速一直是香港新加坡日本这些延迟比较低,虽然出口主机是在美国的,但感觉这样应该还是最近的。
然而真正分别测试后发现,并非如此
延迟1是本地到CDN 延迟2是 主机到CDN 总延迟是二者相加
可以发现 虽然本地到香港延迟最低,但对我这台位于美国的主机,实际上使用 SFO 节点比香港的总延迟更低
我的测试方法是使用本工具 httping, 使用 CDN 上面 cache 的文件作为测试 URL
延迟1 在本地测, 延迟2 在主机测 (延迟2 实际上是反向了 但我感觉影响不大) 选同个地区最快节点
大家觉得我这个方法是否比较靠谱?
测试结果:
地区 延迟1 延迟2 总延迟
SFO 175.61 + 2.08 = 177.69
LAX 189.15 + 9.25 = 198.40
SEA 179.49 + 20.88 = 200.37
ICN 70.60 + 129.98 = 200.58
HKG 48.87 + 152.72 = 201.59
NRT 97.29 + 106.79 = 204.08
PHX 191.57 + 20.75 = 212.32
SLC 212.58 + 17.75 = 230.33
HIO 214.26 + 17.18 = 231.44
YVR 198.71 + 38.17 = 236.88
SIN 79.00 + 167.75 = 246.75
DEN 228.53 + 27.20 = 255.73
DFW 214.26 + 42.62 = 256.88
KUL 96.69 + 172.95 = 269.64
IAH 220.62 + 52.04 = 272.66
FRA 127.65 + 149.60 = 277.25
ORD 219.80 + 60.87 = 280.67
YYC 249.16 + 38.32 = 287.48
ATL 230.02 + 58.56 = 288.58
MRS 147.60 + 151.32 = 298.92
KIX 191.48 + 108.85 = 300.33
Beta Was this translation helpful? Give feedback.
All reactions