中 基础
CDN原理#
一句话答案#
CDN 将内容缓存到全球边缘节点,DNS 解析到最近节点就近获取,减少源站压力和网络延迟。
核心要点
流程: 用户请求 → DNS 解析到最近 CDN 节点 → 节点有缓存直接返回 → 无缓存回源拉取
适合: 静态资源(JS/CSS/图片) / 大文件下载 / 直播流
Cache-Control: max-age 控制缓存时间
“就近”到底怎么实现的(DNS 调度):
- 域名通过 CNAME 链指向 CDN 厂商的调度域名(如
img.site.com → site.com.cdn.com),把解析权交给 CDN 的权威 DNS。 - CDN 权威 DNS 调度时看的不是用户 IP,而是用户本地 DNS(LDNS)所在的区域,再结合各节点的负载、健康状态返回一个就近且可用的边缘节点 IP。
- 局限:它假设”用户离 LDNS 很近”,但用户用了公共 DNS(如 8.8.8.8)时 LDNS 可能在外地,会被调度到错误区域;DNS 缓存也会让调度滞后。
- HTTPDNS 更精准:客户端直接用 HTTP 向 CDN 调度服务请求节点 IP,带上真实客户端 IP,绕开 LDNS 区域偏差和 DNS 缓存污染,调度更准、还能防域名劫持。
面试回答(2分钟版)
CDN全称内容分发网络,核心思路是把内容缓存到离用户最近的边缘节点,减少网络延迟和源站压力。整个流程是这样的:用户发起请求时,DNS解析会被引导到CDN的智能调度系统,根据用户IP、网络质量等因素返回最优的边缘节点IP。用户直接从边缘节点获取内容,如果节点有缓存就直接返回,没有则回源站拉取并缓存下来供后续请求复用。CDN最适合加速静态资源比如JS、CSS、图片和大文件下载,通过Cache-Control的max-age控制缓存时间。需要注意的是CDN不仅仅是缓存,还提供负载均衡、安全防护(防DDoS)等能力,而且随着边缘计算的发展,动态内容也可以在边缘节点做部分处理来加速。缓存过期后可以通过主动刷新或预热来更新内容。
追问与易错
追问方向:
- “CDN 回源是什么?”→ CDN 边缘节点缓存未命中时,向源站请求最新内容并缓存到边缘节点,下次相同请求直接返回
- “动态内容能用 CDN 吗?”→ 可以,通过边缘计算(Edge Computing)和动态加速(DSA)优化链路减少回源延迟
- “CDN 缓存过期怎么刷新?”→ 主动刷新(Purge API 清除指定 URL 缓存)+ 被动过期(TTL 到期回源验证)+ 预热(提前将内容推送到边缘节点)
- “CDN 怎么做到’就近’返回节点?”→ 域名 CNAME 到 CDN 权威 DNS,权威 DNS 按用户 LDNS 所在区域 + 节点负载/健康返回就近节点 IP;缺点是依赖”用户离 LDNS 近”的假设,用公共 DNS 时会调度偏差,故 HTTPDNS(带真实客户端 IP 走 HTTP 查询)更精准
易错点:
- ❌ CDN 只能加速静态资源——也可以加速 API(边缘计算)
- ❌ CDN 就是缓存——还有负载均衡/安全防护/加速等