CDN(内容分发网络)已成为提升网站访问速度和稳定性的核心手段。它通过在全球各地部署边缘节点缓存源站内容,使用户能就近获取资源,显著降低延迟和服务器压力。然而,CDN的缓存策略并非一成不变,不同业务模型、访问特点和内容类型决定了缓存策略的灵活性和精准性。合理选择CDN节点的缓存策略,既能保障用户体验,又能优化源站带宽与成本结构。
缓存策略定义了哪些内容可以被CDN缓存、缓存多久、如何刷新更新以及针对不同请求如何命中缓存。CDN缓存策略直接影响用户访问延迟、源站带宽使用率、回源请求频率、缓存命中率、网站访问可用性等关键指标。缓存策略的选择,不只是对资源做“是否缓存”的判断,更重要的是通过策略匹配用户行为与内容生命周期,使CDN节点保持高效、准确、及时的资源响应能力。
CDN缓存策略通常由缓存时间、缓存规则和刷新机制三大部分构成:
1. 缓存时间策略
缓存时间策略一般可分为三类,静态内容长期缓存,动态内容短期缓存和私有内容不缓存。通常情况下,静态内容长期缓存建议设置如7天、30天这样较长的TTL。动态内容短期缓存的TTL一般不超过10分钟。私有内容应通过Cache-Control或cookie控制不被缓存。
TTL值可通过HTTP响应头部字段Cache-Control: max-age、CDN控制台的缓存配置规则、源站 .htaccess 文件(Apache)或 Nginx 配置等方式来进行控制。
2. 缓存规则控制
根据请求路径、请求参数、头信息决定是否缓存。常见策略包括按路径缓存、按文件类型缓存、按参数区分缓存。
按路径缓存例如 /static/* 缓存30天,/api/*不缓存;
按文件类型缓存如 .jpg、.png、.css、.js 设置长时间缓存;
按参数区分缓存某些请求中带有 ?version=1.0 等参数,可设置忽略或包含参数缓存。
3. 缓存刷新策略
指内容更新后,如何通知CDN节点刷新缓存内容,避免用户获取到旧数据。一般来说可分为三种,主动刷新、缓存过期自动刷新和回源协商缓存。
主动刷新是指通过API或控制台手动刷新指定URL、目录;
缓存过期自动刷新即TTL到期自动回源获取新内容;
回源协商缓存则是使用 ETag 和 Last-Modified 字段,CDN判断源站资源是否变更。
如何根据业务类型匹配缓存策略
不同的网站类型对缓存策略有不同要求,以下列举常见场景及其适配策略:
1. 内容型网站(资讯站、博客)
内容更新频繁但非实时内容的网站,建议静态内容缓存7天以上,页面缓存1-2小时,首页及栏目页配置主动刷新接口,更新发布后自动刷新CDN节点。
2. 电商网站
特点:具备大量动态内容、价格、库存实时变化的电商网站,建议品图片、CSS、JS长期缓存,商品详情页按URL+参数区分缓存,TTL不超过5分钟,用户登录、购物车、结算页设置不缓存或仅浏览器缓存。
3. 教育或视频平台
教育或视频平台有大量的大文件传输、高并发访问,建议视频内容使用按文件名+range请求方式缓存,开启分片缓存;视频封面图、播放器资源长期缓存;实时弹幕、课程评论使用不缓存或动态请求
4. SAAS服务或后台系统
这类服务需要具备高动态性和高权限性,建议不缓存页面主内容,可缓存静态资源,如图标、脚本;所有API请求设置 Cache-Control: no-store 防止用户数据泄露
缓存命中率优化建议
缓存命中率越高,CDN的作用越明显。若命中率过低,说明CDN没有真正发挥其缓存作用。以下是提升命中率的有效方法:
1. 避免URL参数影响缓存
默认CDN对含不同参数的URL视为不同请求,可设置忽略部分无关参数:
http://example.com/news?id=123&from=baidu
http://example.com/news?id=123&from=weixin
可配置 from 参数忽略,统一缓存 id=123 的内容。
2. 规范缓存头部设置
确保源站正确返回以下字段:
Cache-Control: public, max-age=86400
ETag: "file1234"
Last-Modified: Wed, 10 Jun 2025 08:00:00 GMT
这些字段能帮助CDN精准判断是否需要回源,避免重复拉取未更新资源。
3. 使用带版本号的静态文件
修改静态文件后可通过文件名变更控制缓存更新,如:
<script src="/js/main.v2.1.js"></script>
每次更新时文件名不同,旧缓存自动失效,避免强制刷新带来的带宽浪费。
4. 细化路径与类型缓存策略
将 /static/img/
、/static/js/
、/static/css/
分别设置不同TTL,而非统一策略。对于访问频率高的路径,还可开启“热缓存优先”。
CDN缓存不是简单的“启用即用”,而是与业务逻辑、数据变化频率、用户行为紧密结合的策略性决策。选择合适的缓存策略,是企业IT资源最优化利用的重要组成部分。
