被 CDN 坑了?强制解析源站 IP 看回源耗时
CDN 的承诺是「离用户更近」。可如果缓存没命中,它做的第一件事是回源,这时候用户等的是「边缘到源站」这一整段。
比直连还慢,很常见。
两次测试,一个差值
在 网站测速 里跑两次。第一次,正常测。请求打到最近的边缘节点,走的是 CDN 链路。
第二次,高级选项里指定解析,把域名强制指到源站 IP。请求跳过 CDN,直接打到源站。
两次的 TTFB 相减,大致就是回源的成本。差得多,说明缓存命中率低或者回源链路差。
怎么确认是不是缓存问题
同一个 URL 连续测两次。第二次明显快,说明第一次把缓存打热了,之前是未命中。
如果每次测都一样慢,那不是冷缓存的问题,是缓存根本没生效:可能是 Cache-Control 设成了 no-store,可能是带了 Set-Cookie,也可能是查询参数让缓存键每次都不同。
源站 IP 从哪来
最稳的办法是看源站服务器自己的公网 IP,或者 CDN 后台的源站配置。
不要靠猜。有些站的解析结果里混着 CDN 的 IP 和源站 IP,直接拿来做测试很容易测错对象。用 IP 查询 看一下归属,能区分开——CDN 的 IP 通常归属是云厂商的边缘节点段。
两个风险
绕过 CDN 直连源站,等于把源站暴露在公网流量下。源站如果有防护或者只允许 CDN 回源,这次测试会被拦,这属于正常现象,不是故障。
另外,别把这种测试当成压测。拨测是单次请求,量很小,但它确实会打到源站。频率上控制一下,别拿它当监控跑。
还有一种情况
边缘快、回源也快,但用户还是说慢。这时候问题通常不在网络,在资源:图片太大、JS 太多、首屏渲染被阻塞。
拨测只测 HTML,不加载图片和脚本,这些它看不见。换个工具查前端,别在网络上继续绕。