云服务器接入CDN后的缓存机制与配置要点
一、工作原理
- 用户发起请求时,调度系统将请求路由到就近的边缘节点;节点检查本地是否已有该资源的缓存副本(以缓存键 Cachekey 为索引)。命中则直接返回;未命中则向源站(云服务器 ECS)回源获取资源,按配置的缓存规则存储后再响应给客户端。后续相同请求优先命中边缘缓存,显著降低回源带宽与时延。对于大文件(如音视频),可启用Range 回源分片拉取,提升大文件分发效率与稳定性。
二、缓存规则与关键配置
- 缓存过期时间(TTL)
- 不常更新的静态资源(如图片、应用下载):建议设置≥1个月。
- 频繁更新的静态资源(如JS、CSS):按变更频率设置较短 TTL,必要时配合文件名版本化或主动刷新。
- 动态资源(如PHP、JSP、ASP):建议0s(不缓存),避免会话/业务状态被错误缓存。
- 规则优先级与匹配
- 通过权重(1~99,数值越大优先级越高)控制多条缓存规则的生效顺序;同一资源命中一条规则后通常不再继续匹配后续规则。
- 源站与客户端缓存策略协同
- 可开启优选遵循源站缓存策略(以源站 Cache-Control/Pragma 为准),或开启忽略源站不缓存标头(忽略 no-store/no-cache/max-age=0 等),以及客户端跟随CDN缓存策略(将最终生效策略回写到响应头)。
- 当 TTL 配置为0s时,可启用强制内容重新验证,让节点仍缓存但每次请求回源做有效性校验(协商缓存)。
- 缓存键 Cachekey 与参数处理
- 默认 Cachekey 由域名+路径+查询参数组成;若查询参数不影响内容,建议开启忽略参数(URL 参数)以合并相同资源的缓存副本,提升命中率。
- 回源与访问控制
- 多站点源站时配置回源 HOST;大文件开启Range 回源;防盗链用Referer 黑白名单;防盗刷用URL 鉴权(需源站按算法生成签名 URL)。
三、缓存更新与失效
- 过期后自动校验更新
- 缓存过期后,若源站返回 Last-Modified/ETag,CDN 会发起协商缓存:未变更返回 304(仅更新有效期),已变更返回 200(更新缓存内容)。
- 主动刷新与预热
- 资源未过期但需要立刻更新时,使用缓存刷新;新内容上线前可预热(提前加载到边缘节点),减少首访慢速与回源峰值。
- 版本化与路径变更
- 通过文件名加版本号/哈希(如 style_v2.css、app.a1b2c3.js)或变更路径,实现强一致发布与快速回滚;避免同名覆盖导致用户端长期命中旧缓存。
四、快速落地步骤
- 在 CDN 控制台添加加速域名并配置源站地址(ECS 公网 IP 或源站域名);为关键资源设置目录/后缀名/精确文件的缓存规则与权重;按需开启忽略参数、Range 回源、Referer 黑白名单、URL 鉴权等。
- 在域名 DNS 将业务域名添加CNAME指向 CDN 提供的加速域名,等待解析生效(通常几分钟到几小时)。
- 上线前对新资源执行预热;上线后对变更资源执行刷新;通过控制台监控命中率、回源率、响应时延等指标并持续优化规则。
五、常用场景配置示例
| 场景 | 建议配置 |
|---|
| 图片、下载类静态资源 | 缓存 TTL ≥1个月;开启忽略参数;必要时开启智能压缩(Gzip/Brotli) |
| JS、CSS 等频繁更新 | 设置较短 TTL;采用文件名版本化;发布后主动刷新相关路径 |
| 大文件(音视频等) | 开启Range 回源;适当延长 TTL;预热热点分片 |
| 动态接口/登录表单 | 缓存 TTL 0s;如需加速动态内容,考虑全站加速 DCDN |
| 多站点源站 | 配置回源 HOST指向正确的站点;结合Referer/URL 鉴权保障安全 |
上述做法可显著提升缓存命中率、降低回源压力并改善终端体验。