CDN:把内容搬到离用户最近的地方
更新时间:2026-09-17。网络协议域·应用层/分发。CDN 的入口常通过 DNS 解析的 CNAME + 调度实现,HTTPS 边缘终结见 HTTPS 性能。
CDN(Content Delivery Network,内容分发网络) 在各地部署大量边缘节点(edge/POP),把源站内容缓存到离用户物理/网络更近的位置。用户访问时被调度到就近节点,命中则直接由边缘返回,从而降低延迟、减轻源站带宽压力、并分摊攻击流量。
一、一次访问怎么走到边缘节点
CDN 通常借 DNS 完成调度(结合DNS解析):
用户查询 img.example.com
-> CNAME 到 CDN 厂商域名(如 example.cdn.net)
-> CDN 权威 DNS 根据用户地理位置(Local DNS/EDNS)、节点健康与负载
返回一个最优边缘节点 IP
-> 用户直接与该边缘节点建连(TLS 就近终结,握手 RTT 更短)
边缘有缓存副本? -> HIT 直接返回
-> MISS 则边缘回源站拉取,缓存一份再返回因为边缘节点多为任播/就近调度,TCP 与 TLS 握手 RTT、首字节时间都比回源到远地数据中心短。
二、缓存命中与回源
| 状态 | 含义 |
|---|---|
| HIT(命中) | 边缘有新鲜副本,直接返回,不回源(最理想) |
| MISS(未命中) | 本地没有,回源拉取并缓存 |
| EXPIRED/STALE | 缓存过期,需回源校验(条件请求)或重新拉取 |
| BYPASS | 配置要求不缓存,直接透传源站 |
响应头常能看到 X-Cache: HIT/MISS、Age:(已在边缘缓存了多少秒)、Via:(经过的代理/CDN 节点)。缓存命中率(命中请求数/总请求数)是 CDN 最核心的指标,命中率低意味着大量请求仍打到源站,CDN 价值打折。
三、缓存什么、缓存多久
- 可强缓存:静态资源——图片、JS/CSS、字体、下载文件、视频切片。这类内容 URL 稳定、变化少,适合长 TTL。
- 带协商缓存:HTML 等可能变化但不频繁的内容,用
ETag/Last-Modified条件请求,命中返回 304。 - 默认不缓存:动态、个性化、带 Cookie/Authorization 的 API 响应(可按规则覆盖)。
CDN 通常尊重源站的 Cache-Control(max-age、s-maxage 专门给共享缓存/CDN)、Expires,也可在控制台按路径/后缀配置 TTL。
四、缓存键(Cache Key)与 Vary
"什么算同一份内容"由缓存键决定,默认通常是 <方法> + URL(+部分头部)。
- URL 查询参数默认可能参与键,
?utm=...之类追踪参数会造成"同一内容多份缓存"、命中率下降——CDN 常配置忽略/排序参数。 Vary头告诉缓存按某请求头区分版本(如Vary: Accept-Encoding、Accept-Language);Vary 维度太多会让缓存键空间膨胀、命中下降。- 移动端/PC、不同语言、压缩格式(gzip/br)需要不同版本时才加区分维度。
五、更新、刷新与预热
缓存与源站一致性需要主动管理:
- 缓存刷新/purge:内容更新后主动让边缘失效(按 URL/目录),否则要等 TTL 自然过期。
- 预热 prefetch:大促/发版前主动把热点内容推到边缘,避免首个用户 MISS 回源。
- 文件名指纹(hash)+ 长 TTL:前端工程化标配——
app.3f9a2c.js内容变则文件名变,旧的可永久缓存,新 URL 自动失效,规避"更新了但用户拿到旧文件"。
六、回源、动态加速与安全
- 回源协议:边缘到源站可走 HTTP 或 HTTPS;可配置回源 Host 头、回源 SNI、私有源鉴权。
- 动态加速(DSA/DCDN):对不可缓存的动态请求/API,CDN 用自己的优质骨干/专线在边缘与源站间选路、优化连接复用,降低跨网 RTT(路由优化而非缓存)。
- 安全附加:边缘终结 TLS(见 TLS/HTTPS 性能)、DDoS 清洗、WAF、防盗链(Referer/URL 签名/Token 鉴权)、限频。
- 多层级联:边缘未命中可先回上层/区域中心节点(parent),再回源,形成分层缓存。
七、排查思路
curl -I URL看X-Cache/Age/Via/Cache-Control,判断是否命中、缓存多久。- 命中率低:检查 TTL 是否过短、查询参数/Cookie 是否污染缓存键、资源是否可缓存、Vary 是否过细。
- 更新不生效:是否只更新了源站没刷新 CDN;文件名指纹是否变化。
- 偶发旧内容:多级节点 TTL 不一致、部分节点尚未刷新。
- 跨地域慢:DNS 调度是否把用户导到了偏远节点(结合 DNS、
dig排查)。
相关阅读
调度依赖 DNS 解析与 CNAME,HTTP 缓存头在 HTTP/1.1,TLS 就近终结见 HTTPS 性能,回源后端与 L4/L7 见负载均衡。
总结
CDN 通过 DNS(CNAME+调度) 把用户引到就近边缘节点,命中缓存就直接返回、未命中才回源并按 Cache-Control/s-maxage 缓存;命中率取决于可缓存性、TTL 和缓存键(URL 参数、Vary、Cookie),更新靠刷新/预热与文件名指纹,动态内容则用动态加速做回源选路优化,并顺带提供就近 TLS 终结、WAF 和抗 DDoS 能力。