
接入CDN后出现变慢通常由几类原因导致:一是DNS或边缘节点选择异常导致到达边缘的延迟增加;二是缓存未命中频繁导致每次都回源;三是TLS握手或HTTP/2/连接复用配置不当;四是边缘与源站间回源链路、本身源站响应慢。定位思路是先用浏览器面板和命令行工具区分是“边缘延迟”还是“回源延迟”。
打开浏览器开发者工具的Network面板,检查每个请求的域名、域名解析时间、TTFB、是否有 Age、x-cache 等响应头来判断是否为缓存命中。
使用 curl, traceroute, mtr:curl -I -v https://example.com查看TLS、重定向和响应头;traceroute/tracert定位路由跳数延迟。
若大多数资源显示 x-cache: MISS 且 TTFB 高,则很可能是回源问题;若 DNS 解析或 TCP 建立占比高,则倾向于 DNS/连接层问题。
在Network面板将请求按域名分组,关注每个请求的“Timing”细节:DNS、Initial Connection、SSL、Request、Response。若多条资源在“Initial Connection/SSL”阶段耗时较多,可能是TLS握手或边缘节点连通性问题;若“Waiting (TTFB)”阶段耗时,则可能是回源或边缘处理慢。
注意检查 Cache-Control、Age、x-cache、via 等头部,Age 表明是否命中边缘缓存,x-cache: HIT 表示边缘命中。
使用 WebPageTest 或 Pingdom 从不同地区测试,判断是否为某些 PoP(节点)异常导致的慢。
通过绕过CDN直接请求源站可以确认回源性能:使用 curl --resolve 或 hosts 本地覆盖将域名指向源站 IP,再执行 curl -w '%{time_starttransfer}\n' -o /dev/null -s https://example.com 来测量直接回源的 TTFB。
检查 CDN 日志中的回源延迟字段及响应头(例如 x-cache、x-origin-response-time),若回源时间高,则需要在源站优化或部署Origin Shield/缓存层。
优化数据库查询、减少慢接口、增加缓存层(Redis/边缘缓存)、开启 gzip/brotli、启用 keep-alive 和连接池。
使用 dig +trace、nslookup 检查解析链路,观察是否出现地理位置错误的解析或TTL异常。通过 traceroute/mtr 检测到边缘节点的路由跳数和丢包,如果某段出现丢包或高延迟,可能是ISP或中间链路问题。
用外部节点(比如Bash脚本在多台云主机,或借助 WebPageTest)对比不同地区的解析结果和路由路径,判断是否为地理DNS或Anycast调度异常。
确认是否启用了 EDNS、IPv6、以及合理的 TTL;检查 DNS 负载均衡和健康检查配置,必要时联系 CDN 厂商排查 PoP。
常见错误包括缓存规则不当(重要资源被设置为不缓存或带有随机查询字符串)、Cookie 或 Authorization 导致缓存失效、错误的 Cache-Key、未启用 HTTP/2/QUIC、TLS 配置不佳。优化建议:合理设置 Cache-Control、使用缓存键排除无关 Query、启用 Brotli/HTTP2、采用 Origin Shield、开启 TLS 会话重用与 OCSP Stapling。
每次调整后用 curl 和浏览器面板验证 x-cache、Age、TTFB 变化,并在多地复测以保证效果。
建立 RUM(真实用户监测)和合成监测,对关键链路(DNS、TLS、TTFB、首屏)设置告警,及时发现回归。