Vibe Tutorial
无服务器部署与 CI CD 自动化

11.3 CDN概念

Tip

再快的跑车(服务器),也跑不过光速的物理限制(延迟)。


1. 为什么要学这个?

你在北京部署了一台高性能服务器。 北京用户访问很快 (10ms)。 但是,你远在伦敦的表弟访问时,信号需要通过海底光缆横跨半个地球。 物理延迟:光速跑完这个距离加上路由转发,至少需要 300ms。 如果页面有 10 张图片,由于 HTTP 握手,这种延迟会被放大数倍。 结果:你表弟看到的是一张张慢慢刷出来的图片,像回到了拨号上网时代。

CDN (Content Delivery Network) 就是把你的网站"复印"无数份,撒在世界各地的"前置仓"里。


2. 核心概念:物流系统

1. 源站 (Origin)

这是你的总仓库(你的 Vercel Server 或 AWS S3)。 这里存着唯一的、最新的原始文件。

2. 边缘节点 (Edge Node)

这是你家楼下的快递柜。 全球有成千上万个这样的节点。

3. 缓存策略 (Caching)

  • 首次访问 (Miss): 快递柜没货 -> 去总仓库取货 -> 放进柜子 -> 给用户。
  • 后续访问 (Hit): 快递柜有货 -> 直接给用户 (只需 10ms)。

3. 解决方案 (HOW)

运作流程图

graph TD
    User["伦敦用户"] -->|"请求 logo.png"| EdgeUK["CDN 节点 (伦敦)"]
    
    EdgeUK --"命中 (Hit)"--> User
    
    EdgeUK --"未命中 (Miss)"--> Origin["源站服务器 (北京)"]
    Origin --"回源取货"--> EdgeUK
    EdgeUK --"缓存文件"--> EdgeUK
    
    style EdgeUK fill:#fff9c4,stroke:#fbc02d
    style Origin fill:#c8e6c9,stroke:#2e7d32

避坑指南

✅ 推荐做法 (Do) ❌ 禁忌 (Don't)
Hash 文件名 main.8a7d9f.js (文件名自带版本号,CDN 可设置永久缓存)
区分动静 API 接口不要乱缓存 (除非你希望所有人都看到张三的个人资料)
刷新缓存 如果非要用同名文件覆盖 (如 logo.png),记得手动通过 API 刷新 CDN

4. 真实案例

Story

一夜破产的视频网站

某初创公司在主页放了一个 50MB 的高清宣传视频,直接放在自己的 ECS 服务器上。 突然,这个视频在社交媒体火了。 几万人在同一时间点击播放。 结果 1:服务器带宽瞬间被打满,所有人都在转圈圈,网站瘫痪。 结果 2:云厂商按流量计费,第二天收到了 $10,000 的账单。 复盘:如果他们用了 CDN:

  1. 99.9% 的流量会被 CDN 扛住,源站毫无压力。
  2. CDN 的流量费通常是源站带宽费的 1/10。

Vibe 心法: CDN 是互联网的防波堤。它不仅让你快,更重要的是——它保护你的源站不被流量洪峰冲垮。甚至在遭受 DDoS 攻击时,CDN 也是你的第一道防线。


5. 本章小结

  1. 距离即延迟:物理距离是无法逾越的,只能靠 CDN 缩短。
  2. 缓存为王:离用户越近的缓存,价值越高。
  3. 默认开启:在 Vercel 这种现代平台上,CDN 是默认自带且免费的,你甚至感觉不到它的存在。