CDN 缓存说白了就是把你服务器上的内容搬到离用户更近的节点上。配得好,源站压力能降 95% 以上,页面秒开;配不好,用户看到的可能是过期内容,或者每个请求都回源,CDN 等于白接。这篇文章讲讲怎么把缓存策略调到位。

一、CDN缓存原理

缓存工作流程

  1. 用户请求资源,CDN节点接收请求
  2. 节点检查本地是否有该资源的缓存
  3. 如果有缓存且未过期(命中),直接返回
  4. 如果没有缓存或已过期(未命中),回源获取
  5. 将获取的资源缓存到节点,返回给用户

缓存命中率:业务性能的风向标

缓存命中率 = 命中请求数 / 总请求数

它是衡量 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格式,及时刷新更新内容,可以在保证内容新鲜度的同时最大化缓存效益。