CDN 的工作原理与缓存策略
一、CDN 解决什么问题
用户与源站之间的物理距离和网络链路质量,直接决定访问速度。跨地区、跨运营商的访问延迟高、丢包率高。CDN 在全球各地部署边缘节点,把内容提前缓存到离用户最近的节点上,用户请求不再回源站,直接由边缘节点响应。
收益有三个:降低访问延迟,分担源站带宽压力,边缘节点天然形成一层流量屏障,提高抗攻击能力。
二、一次 CDN 请求的流程
用户发起请求后,DNS 解析把域名引导到最优的边缘节点。节点检查本地缓存:命中且未过期,直接返回内容;未命中或已过期,节点回源站获取内容,返回给用户的同时按规则缓存。后续其他用户的相同请求即可在边缘命中。
回源过程本身也可以分层,边缘节点先向区域中心节点请求,中心节点再回源站,减少源站承受的回源流量。
三、缓存策略的核心是过期规则
CDN 缓存什么、缓存多久,由缓存规则决定。规则通常按文件类型或路径配置:图片、样式、脚本等静态资源适合长缓存,HTML 页面适合短缓存或不缓存,接口响应默认不应缓存。
过期控制有两个来源。源站通过响应头声明缓存策略,CDN 默认遵循;CDN 控制台也可以配置覆盖规则。两者冲突时需要明确优先级,否则会出现源站更新了内容、CDN 仍返回旧版本的情况。
四、内容更新的正确姿势
静态资源更新后如何让 CDN 立即失效,是 CDN 使用中的经典问题。业界的主流解法是文件名指纹:构建时根据文件内容生成哈希值嵌入文件名,内容变化文件名就变化,旧缓存自然失效,新文件作为新资源重新缓存。HTML 引用新的文件名,而 HTML 本身设置短缓存或不缓存,保证用户总能拿到最新的引用关系。
对于无法改文件名的场景,CDN 提供主动刷新接口,可以按地址或目录提交缓存失效请求。但刷新有生效延迟和频率限制,不应作为常规更新手段。
五、常见误区
把动态接口也接入 CDN 且未关闭缓存,导致用户看到他人的数据或过期数据,这是后果最严重的一类错误。缓存键设计不当,忽略了请求参数或请求头的差异,导致不同版本的内容互相覆盖。源站故障时大量缓存同时过期,回源流量瞬间压垮源站,需要配合源站保护和回源限流。
六、总结
CDN 的本质是一个地理分布的缓存层,它的行为由缓存规则驱动。用文件名指纹管理静态资源版本,用短缓存保护 HTML 入口,用明确的规则隔离动态内容,是 CDN 稳定发挥作用的三个要点。把 CDN 当成透明加速器而不管理缓存策略,迟早会遇到内容不更新或缓存错乱的问题。
- 点赞
- 收藏
- 关注作者
评论(0)