ArcLibrary

CDN(内容分发网络)

把内容缓存到离用户最近的节点 —— 现代互联网延迟 / 带宽 / 抗 DDoS 的基础。

CDN边缘缓存
核心 · Key Idea

一句话:CDN 把静态资源缓存到全球数百个边缘节点,用户访问时就近响应。源站只承担「回源」流量,承压能力大幅提升,跨洲访问速度也从秒级降到毫秒级。

是什么#

用户 → 离自己最近的边缘节点
        命中缓存 → 直接返回
        未命中  → 回源拉数据 → 缓存 → 返回

DNS 在解析域名时把用户引到「最近的边缘 IP」,靠的是Anycast + GeoDNS

打个比方#

打个比方 · Analogy

源站像总仓库,CDN 边缘节点像遍布全国的便利店。买热门商品(缓存命中)直接在便利店买;冷门货(未命中)便利店替你去仓库拉,下次也变成便利店有货

关键概念#

Origin源站
你真正的服务器,CDN 未命中时去这里拉。
Edge / PoP边缘节点
全球分布的缓存服务器(Point of Presence)。
TTL缓存时长
由响应头 Cache-Control / Expires 决定。
Cache Key缓存键
决定哪些请求被视为同一份缓存(默认 URL,可加 query / cookie)。
Purge清缓存
强制让 CDN 丢弃旧版本,立即回源。
Anycast任播
多个节点宣告同一个 IP,BGP 把用户路由到最近的节点。

怎么工作#

源站永远只看到 N 次回源,承压上百倍 / 上千倍流量。

实操要点#

  • 设置正确的 Cache-Control

    Cache-Control: public, max-age=31536000, immutable    # 静态资源
    Cache-Control: no-store                               # 用户私有数据
    Cache-Control: public, max-age=60, s-maxage=600       # 页面:浏览器 1min,CDN 10min
    
  • 用版本化文件名/app.abc123.js):发版直接换 hash,CDN 自然换缓存。

  • Vary 头别滥用Vary: Cookie 会按 cookie 拆分缓存,命中率暴跌

  • HTTPS 必走 CDN:把回源也设成 HTTPS(不要用「灵活 SSL」之类的明文回源模式)。

  • Edge Compute:Cloudflare Workers / AWS Lambda@Edge,可以在边缘改请求 / 响应而不必回源。

易混点#

CDN
全球**多个**节点。
主要为缓存 + 加速 + 抗压。
反向代理 (nginx)
通常**单个**前置代理。
主要为路由 / 鉴权 / 灰度 / TLS 终止。

延伸阅读#