CDN 加速九成问题集中在四类:域名解析没生效、证书或 HTTPS 握手失败、缓存规则配错导致内容不更新、回源带宽被静态资源吃满;先判断故障落在哪一类,比盲目换节点更快解决问题。
CDN 加速后网站反而变慢,先查什么?
结论:接入 CDN 后变慢,优先查 CNAME 是否生效、缓存命中率是否偏低、有没有走「回源」链路。回源指 CDN 节点没有缓存内容时,回到源站服务器取数据的过程;每一次回源,用户都要等源站响应。
按顺序做三步:
- 用
dig 你的域名 +short 或 nslookup 检查是否已返回 CDN 厂商的 CNAME 目标。域名解析记录(CNAME 指别名记录)的 TTL 通常设 600 秒,改完最长等 10 分钟再验证。
- 看缓存命中率。命中率低于 80% 就要检查静态资源有没有被缓存,图片、CSS、JS 的缓存时间建议设 7~30 天,HTML 设 60~300 秒。
- 查节点覆盖。用户与节点跨运营商时延迟会明显上升,选支持多线 BGP 的加速产品,比在源站加带宽更有效。
如果三步都正常还慢,再排查源站本身响应时间:源站 TTFB(首字节时间)超过 800ms,CDN 只能加速传输段,救不了后端。
CDN 缓存不更新、改了内容还是旧的怎么办?
结论:内容不更新几乎都是缓存 TTL 没到期,用「刷新缓存」而不是改 DNS。常见做法是先在 CDN 控制台提交 URL 刷新或目录刷新,一般 1~5 分钟生效;再把 HTML 的缓存时间压到 60 秒以内,静态资源用文件名加版本号(如 app.v3.js)的方式更新。
另外注意两点:带查询参数的 URL(?v=2)会被当成不同资源,缓存容易碎;登录态页面、后台接口必须设为「不缓存」,否则会出现 A 用户看到 B 用户数据的事故。
结论:动态接口和用户隐私页面要单独设置不缓存规则,这是 CDN 配置里最容易出事的一项。
CDN 回源率高、源站带宽跑满怎么优化?
结论:回源率高的根因是缓存规则太保守,其次是资源太大。三个动作按性价比排序:
- 开启回源合并(合并回源请求),节点侧把同一资源的并发请求收敛成一次回源,对突发流量效果最明显。
- 打开压缩:Brotli 或 Gzip 对文本类资源通常能压缩到原体积的 30% 左右。
- 图片走 WebP/AVIF 自适应,视频切片后用 HLS,不要直接让 CDN 回源整段 MP4。
优化后观察一周的回源带宽曲线,正常站点回源流量占总流量的 10%~20%,超过 40% 就说明缓存策略还有问题。
接入 CDN 后 HTTPS 报错、证书不生效怎么排查?
结论:CDN 上的 HTTPS 问题八成是证书链不完整或回源协议不匹配。检查顺序:
- 证书要部署在 CDN 侧,不能只装在源站;源站也要有证书,否则「CDN→源站」这一段用 HTTPS 回源会握手失败。
- 用
curl -I https://你的域名 看是否有证书告警,证书链不完整时部分安卓机和老版本客户端会直接报错。
- 别同时开「强制 HTTPS」和源站的 301 跳转,容易形成循环跳转,表现为浏览器报「重定向次数过多」。
国内 CDN 加速一定要先备案吗?
结论:源站服务器在中国大陆、使用国内节点的 CDN,域名必须完成 ICP 备案,这是硬性要求。服务器在境外或使用境外节点不需要备案,但延迟会明显更高。一个常见误区是「源站在香港就不用备案」——如果接入的是国内 CDN 厂商的大陆节点,仍然要求备案。
遇到配置层面的疑难,可以直接到 GJ 站长论坛的「SSL/CDN/网站防护」版块发帖,把域名解析结果、缓存命中率截图、curl -I 返回头一并贴出,排查效率比只写一句「CDN 好慢」高得多。
总结一下:CDN 排障的顺序固定为「解析 → 缓存 → 回源 → 证书」,每一项都有可量化的判断标准(CNAME 是否生效、命中率 80%、回源占比 20%、证书链完整)。把这几条做成自己的检查清单,大多数加速异常都能在十分钟内定位。