CDN 的原理是把静态资源复制到离用户近的节点。但很多人开了 CDN 之后发现"没变快",甚至"内容不更新了",原因通常是缓存规则没配对。
一、什么该缓存,什么不该
| 资源 | 缓存时长 | 说明 |
|---|---|---|
| 图片、字体、视频 | 30 天以上 | 基本不变,长缓存 |
| CSS / JS(带指纹) | 1 年 | 文件名带 hash,改版即换名 |
| CSS / JS(不带指纹) | 1-7 天 | 改版要手动刷新 |
| HTML | 不缓存或 5 分钟 | 内容更新频繁 |
| API 接口 | 不缓存 | 数据实时性要求高 |
最后两行是重点。很多"网站内容不更新"的问题,都是 HTML 被缓存了一天。
二、缓存键怎么设
缓存键决定"什么算同一个资源"。默认按完整 URL 缓存,意味着带不同参数的 URL 会被视为不同资源,缓存命中率低。
建议忽略无关参数(如 utm_source、from),只保留影响内容的参数。这样能显著提高命中率。
三、回源配置
回源是 CDN 节点向源站取内容的过程。回源慢,首次访问就慢。
- 回源协议:源站支持 HTTPS 就用 HTTPS 回源,避免混合内容。
- 回源 Host:要和源站绑定的域名一致,否则会 404。
- 回源超时:设 10-30 秒,太短会导致偶发 504。
- 回源重试:开启,避免源站瞬时抖动导致失败。
四、刷新与预热
内容更新后,CDN 上的旧缓存要刷新:
- URL 刷新:精确刷新某个文件,几秒生效。
- 目录刷新:刷新整个目录,适合批量更新。
- 预热:主动把新内容推到节点,用户首次访问就命中。
建议把刷新做成流程:发布文章后自动刷新对应 URL 和列表页。手工刷容易漏。
五、HTTPS 与证书
CDN 上要单独配置证书,和源站证书是两回事。常见配置:
- 在 CDN 后台上传证书(或开启免费证书)。
- 开启强制 HTTPS 跳转。
- 开启 HTTP/2 或 HTTP/3。
- 检查是否有混合内容(页面里的 http 资源)。
六、怎么验证效果
三个指标:
| 指标 | 合格线 |
|---|---|
| 缓存命中率 | 70% 以上 |
| 首字节时间(TTFB) | 200ms 以内 |
| 回源率 | 30% 以下 |
命中率低,说明缓存规则太保守;回源率高,说明缓存时间太短或 URL 参数太杂。
七、常见问题与处理
1. 更新了内容,用户看到的还是旧的
HTML 被缓存。把 HTML 的缓存时间设为 0,或发布后主动刷新。
2. 后台登录异常
后台路径被 CDN 缓存了。把后台目录设为不缓存。
3. 部分地区访问慢
节点覆盖不足,或者 DNS 调度不准。换一家节点更多的服务商,或开启智能调度。
4. 百度蜘蛛抓不到新内容
蜘蛛也走 CDN。如果缓存了旧版,蜘蛛看到的也是旧的。给蜘蛛的 UA 设置不缓存,或缩短 HTML 缓存。
CDN 和 SEO 的三处交叉
第一,HTML 缓存时间太长会导致内容更新延迟,蜘蛛抓到的也是旧版;第二,缓存了 404 页面会让死链长期存在;第三,部分 CDN 会屏蔽蜘蛛 UA,导致整站抓不到。上线 CDN 后,这三处必须逐一验证。
验证方法:用不同 UA 请求同一个 URL,看返回内容是否一致;在 CDN 后台查缓存命中与回源日志。
CDN 上线的验证项
HTML 缓存时间太长,内容更新了蜘蛛还抓到旧版;缓存了 404,死链长期存在;部分 CDN 会屏蔽蜘蛛 UA,导致整站抓不到。上线 CDN 后,这三处必须逐一验证。
验证方法:用不同 UA 请求同一个 URL,看返回内容是否一致;在 CDN 后台查缓存命中与回源日志。
HTML 缓存设短一点,静态资源设长一点;更新内容后主动刷新 URL。缓存了 404 会让死链一直存在,记得排除错误页。
HTML 缓存设短、静态资源设长;更新后主动刷新 URL,别让蜘蛛抓到旧版。
常见问题
小网站有必要上 CDN 吗
有。CDN 不只是加速,还能挡一部分攻击、降低源站带宽。基础套餐一个月几十块,性价比很高。
CDN 会不会影响 SEO
配置正确不影响。配置错误(缓存了旧内容、屏蔽了蜘蛛)会严重影响。
免费 CDN 能用吗
能用,适合小站。注意免费套餐的节点质量和限流策略,流量大了会变慢。
速度优化的整体思路,见核心网页指标。