CDN 缓存说白了就是把你服务器上的内容搬到离用户更近的节点上。配得好,源站压力能降 95% 以上,页面秒开;配不好,用户看到的可能是过期内容,或者每个请求都回源,CDN 等于白接。这篇文章讲讲怎么把缓存策略调到位。
一、CDN缓存原理
缓存工作流程
- 用户请求资源,CDN节点接收请求
- 节点检查本地是否有该资源的缓存
- 如果有缓存且未过期(命中),直接返回
- 如果没有缓存或已过期(未命中),回源获取
- 将获取的资源缓存到节点,返回给用户
缓存命中率:业务性能的风向标
缓存命中率 = 命中请求数 / 总请求数
它是衡量 CDN 效率最直观的指标。通常情况下,对于图片、JS/CSS 等纯静态资产,理想的缓存命中率应稳定在 98% 以上。如果命中率偏低,往往意味着缓存规则、URL 规范性或回源逻辑存在优化空间。
二、缓存控制方式
1. HTTP缓存头
源站可以通过HTTP头控制缓存行为:
- Cache-Control:最为核心的控制字段,如
public, max-age=31536000实现一年的深度缓存。 - Expires:指定资源过期的绝对 GMT 时间,作为 Cache-Control 的兼容性补充。
- ETag/If-None-Match:通过文件唯一指纹进行校验,避免在资源未变更时重复传输数据。
- Last-Modified:记录资源最后的修改时间,协助节点进行条件请求(Conditional Get)校验。
2. CDN规则配置
在CDN控制台配置缓存规则,可以覆盖源站设置:
- 按文件后缀配置:如.jpg/.css/.js缓存7天
- 按目录配置:如/static/目录缓存30天
- 按完整路径配置:特定URL不缓存
三、缓存策略建议
静态资源
| 资源类型 | 建议缓存时间 |
|---|---|
| 图片(jpg/png/gif/webp) | 30天 |
| CSS/JS文件 | 7-30天(配合版本号) |
| 字体文件 | 30天 |
| 视频/音频 | 7-30天 |
动态内容
- 完全不缓存:登录接口、支付接口、个人数据
- 短期缓存:首页(5分钟)、列表页(1-5分钟)
- 按需刷新:文章详情页,发布时主动刷新
四、提高命中率的技巧
1. URL规范化
- 统一大小写:/Image.jpg 和 /image.jpg 是不同缓存
- 规范参数顺序:?a=1&b=2 和 ?b=2&a=1 是不同缓存
- 移除无意义参数:如随机数、时间戳
2. 忽略查询字符串
对于不影响内容的参数,可以配置CDN忽略:
- 忽略全部参数:所有?后的参数不影响缓存
- 忽略指定参数:如utm_source等统计参数
3. 分片缓存
对于大文件(如视频),启用分片缓存可以提高命中率和加载速度。
4. 预热缓存
新上线内容可以先预热缓存,避免用户首次访问回源:
- 主动推送URL到CDN预热
- 定时任务触发缓存
五、缓存刷新
内容更新后需要刷新CDN缓存:
刷新方式
- URL刷新:刷新特定URL的缓存
- 目录刷新:刷新整个目录下的缓存
- 版本号策略:文件名加版本号,如style.v2.css
飞盾云边缘计算与智能缓存优势
- AI 智能预判缓存:自主研发的流量建模算法,自动识别热点资源并执行全局分发预热。
- 可编程 Cache Rules:支持基于 Request Header、Cookie 或特定 URL 参数的精准缓存逻辑定制。
- 秒级全球缓存刷新:依托 Anycast 同步网络,实现全网缓存内容的毫秒级清除与更新。
- 动态路径加速整合:在缓存未命中时,自动切换至最优 BGP 链路进行回源,确保“穿透”体验同样极速。
- 99.9% 稳定命中率:通过多级缓存架构与分片预取技术,将源站负载降低至极限。
总结
合理的CDN缓存策略是网站性能优化的关键。根据资源类型设置合适的缓存时间,规范URL格式,及时刷新更新内容,可以在保证内容新鲜度的同时最大化缓存效益。