这个工具测什么?
测各家 CDN 把你分到了哪个节点、离你多远、延迟多少。
CDN 把网站的内容放在世界各地的机房里,这些机房就叫节点(也叫 PoP)。你连的节点离你越近,用这家 CDN 的网站一般就越快。但 CDN 分给你的不一定是最近的那个。
页面从你的浏览器向每家 CDN 下载一个很小的文件,和平时打开网站一样,然后读出是哪个节点在响应,再算出距离、延迟,以及按距离算的理论最低延迟。
这些测试请求直接从你的浏览器发到各家 CDN,不经过本站。
为什么被分到很远的节点?有什么影响?
大多不是你的设备有问题,而是 CDN 和你的运营商选了这条路。
原因:CDN 不是简单按距离分配节点。Cloudflare 等用 Anycast,同一个地址在全球很多地方同时生效,最后走哪条路由你的运营商决定;Akamai、CloudFront 等则按你用的 DNS 服务器在哪里来分配。在中国大陆,用 Cloudflare 免费版和低价套餐的网站,在很多运营商那里会被分到美国西海岸等远处的节点,因为这些线路更便宜。只有付费的中国网络(与京东云合作)才由中国大陆或香港的节点响应。
影响:节点越远,每次请求来回越久。打开网页、加载图片和视频都会慢一些,晚高峰时也更容易卡。
你可以:用了代理或 VPN 时,CDN 会按代理所在地分配节点,可以用「只测直连或只测代理」对比一下;用的是 8.8.8.8 这类公共 DNS 时,换回运营商的 DNS,按 DNS 分配的 CDN 可能会给你更近的节点;也可以换个网络(比如手机流量和家里宽带)对比。网站用哪家 CDN、买哪种套餐,只有网站自己能改。
节点是怎么读出来的?
每家 CDN 都会把节点写进响应里,只是写法不同:
Cloudflare:/cdn-cgi/trace 里的 colo(HKG)。
Amazon CloudFront:Server-Timing 里的 cdn-pop,或 X-Amz-Cf-Pop(NRT57-P11)。
Akamai:Akamai-Request-BC,直接写城市(JP_13_TOKYO)。
Fastly:X-Served-By(cache-nrt-…-NRT)。
Azure Front Door:X-Azure-Ref(…C1TYO…)。
Bunny:响应头 Server(BunnyCDN-JP1-…)。
Wikimedia:X-Cache,缓存服务器的编号代表机房。
浏览器只有在响应允许时才能读到这些信息,所以每家 CDN 都选了一个允许读取的公开文件来测。Google、阿里云、腾讯云 EdgeOne、网宿、Gcore 和 CDN77 都不允许,所以只测延迟。
理论最低延迟是什么?
按距离算出来的延迟下限,实际不可能比它更快。
光在光纤里每毫秒大约走 200 km,一来一回,距离 d 的延迟不可能低于 d ÷ 100 毫秒。实际线路一般比直线长 1.5 到 2 倍。
如果实际延迟超过理论最低值的两倍再加 40 ms,就标为「绕路了」:线路绕了远路,或者在拥堵的线路上排队。
「不是最近的」是什么意思?
说明这家 CDN 明明有离你更近的节点,却没用它。
对于公开了全部节点的 CDN(Cloudflare、Bunny、Wikimedia),页面会找出离你最近的那个。如果实际响应的节点比它远 1,000 km 以上、而且远一倍以上,就会标出来。
这不算故障,是 CDN 或你的运营商选了另一条路。原因和办法见「为什么被分到很远的节点?有什么影响?」。
查网站是怎么查的?
输入一个域名,就能看到它用的是哪家 CDN、由哪个节点响应、延迟多少。
本站的 Worker 通过 Cloudflare 的 DNS 查它的解析记录,不受本地 DNS 或被污染的结果影响,再从 CNAME 指向的地址认出 CDN;同时请求网站的 /cdn-cgi/trace,看是不是 Cloudflare;如果网站允许,还会读出它 favicon 响应头里的节点。最后测一下这个网站的延迟。
域名会发给本站的 Worker 和 Cloudflare 的 DNS。本站不保存。
我的位置是怎么来的?
根据你的 IP 地址,由 Cloudflare 判断(本站运行在 Cloudflare 上)。一般能精确到城市,但也可能差几百公里;用了代理时,得到的是代理所在的位置。
点「用精确位置」会改用浏览器的定位,只在这个页面里用。只有分享时勾选了位置,它才会放进链接,并且只精确到约 10 公里。
会收集我的数据吗?
本站不保存你的测试结果。
测试请求从你的浏览器直接发到各家 CDN,它们和你访问的任何网站一样,能看到你的 IP 地址。本站只帮页面做两件事:根据 IP 判断你的大致位置,把节点代码换成城市名。
分享链接里有节点和延迟。你的城市、坐标(精确到约 10 公里)和运营商,只有你勾选后才会加入;IP 地址永远不会。代码在 GitHub 上开源。