魯斯前端布魯斯前端

文章中英模式

常見的前端面試題目 - 頁面載入 - 什麼是CDN?為何需要CDN

深入解析內容分發網路(CDN)的運作原理、主要優勢與實際應用場景,包含提升網頁載入速度、降低伺服器負載的關鍵知識及面試常見問題的完整解答。

影片縮圖

懶得看文章?那就來看影片吧

基本概念

CDN(Content Delivery Network)內容傳遞網路是一種分散式網路架構,由全球多個節點組成,能夠更快、更可靠地將網站內容傳遞給用戶。CDN 通過在用戶和原始伺服器之間增加中間層,將內容複製到距離用戶最近的節點,從而減少延遲並提高加載速度。

用戶請求
CDN 邊緣節點 ◄────► CDN 中心系統
   │                 │
   │                 ↓
   │         原始伺服器(Origin Server)
   │                 │
   ↓                 │
用戶瀏覽器 ◄─────────┘

CDN 如何運作

  1. 1. 內容分發:將靜態資源(圖片、CSS、JS 等)複製到全球多個節點伺服器
  2. 2. 就近訪問:用戶請求會自動路由到最近的 CDN 節點,減少網絡延遲
  3. 3. 緩存更新:當原始伺服器內容更新時,通過以下方式推送到 CDN 節點:
    • 1. 主動推送 (Push):伺服器變更後自動通知 CDN 更新快取
    • 2. 被動拉取 (Pull):設定 TTL (存活時間),CDN 定期向原始伺服器檢查更新
    • 3. 快取失效 (Purge):管理員手動觸發清除特定內容的快取
    • 4. 版本控制:使用時間戳或版本號在 URL 中,強制客戶端請求新資源
CDN 節點分布示意圖:
┌─────────────────────────────────────────────────────────┐
│                                                         │
│    ★ 北美洲                           ★ 歐洲            │
│    節點群                             節點群            │
│                                                         │
│                                                         │
│                                                         │
│                      原始伺服器                          │
│                          ★                              │
│                                                         │
│                                                         │
│    ★ 亞洲                             ★ 澳洲            │
│    節點群                             節點群            │
│                                                         │
└─────────────────────────────────────────────────────────┘

當台灣用戶訪問網站時:
┌─────────────────────────────────────────────────────────┐
│                                                         │
│    用戶 ──► 台北CDN節點 ◄──┐                            │
│                           │                            │
│                           │                            │
│                      原始伺服器                          │
│                                                         │
└─────────────────────────────────────────────────────────┘
<!-- 使用 CDN 引入 JavaScript 庫的範例 -->
<script src="https://cdn.example.com/jquery/3.6.0/jquery.min.js"></script>

<!-- 使用版本控制避免緩存問題 -->
<script src="https://cdn.example.com/main.js?v=1.2.3"></script>

CDN 的主要優勢

提升網頁載入速度

  • 1. 減少延遲,縮短 TTFB(Time To First Byte)
  • 2. 提供更快的資源加載,改善用戶體驗
  • 3. 支援 HTTP/2 和 HTTP/3 協議,允許並行下載

增強可靠性和穩定性

  • 1. 分散流量,避免單點故障
  • 2. 提供高冗餘和可用性
  • 3. 自動故障轉移機制

降低原始伺服器負載

  • 1. 分擔伺服器壓力,節省帶寬成本
  • 2. 減輕高流量時的負載問題
  • 3. 提供更好的擴展性

安全性增強

  • 1. 提供 DDoS 攻擊防護
  • 2. 支援 HTTPS 加密傳輸
  • 3. 可整合 WAF (Web Application Firewall) 功能

CDN 實際應用場景

  1. 1. 圖片和媒體優化:圖片、影片等大型媒體檔案
    • 1. 例如:Netflix 使用 CDN 分發影片內容,減少緩衝時間
  2. 2. 靜態資源交付:CSS、JavaScript 等前端資源
    • 1. 例如:Facebook 使用 CDN 加速全球用戶的頁面載入速度
  3. 3. 動態內容加速:API 回應和動態生成內容的快取
    • 1. 例如:Twitter 使用 CDN 快取熱門推文和時間軸
  4. 4. 遊戲和軟體下載:大型檔案分發
    • 1. 例如:Steam 平台使用 CDN 分發遊戲更新和下載
  5. 5. 直播和影音串流:低延遲內容傳遞
    • 1. 例如:YouTube 使用 CDN 確保全球用戶流暢觀看影片
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  電商網站使用 CDN 的實際案例                                    │
│                                                             │
│  未使用 CDN:                                                 │
│  美國用戶 ──(200ms)──> 台灣伺服器 ──(200ms)──> 美國用戶         │
│  總延遲: ~400ms                                              │
│                                                             │
│  使用 CDN:                                                   │
│  美國用戶 ──(20ms)──> 美國CDN節點 ──(20ms)──> 美國用戶          │
│  總延遲: ~40ms (提升約90%)                                    │
│                                                             │
│  高流量活動 (如雙11購物節):                                    │
│  - 原始伺服器: 可能因流量過大而崩潰                             │
│  - 使用CDN: 分散流量至全球節點,維持網站穩定運行                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

CDN 的潛在缺點

  • 1. 額外成本:對於小型網站,CDN 服務可能增加不必要的開支
  • 2. 設定複雜性:正確配置 CDN 需要專業知識,設定不當可能導致問題
  • 3. 快取失效挑戰:內容更新時,確保所有 CDN 節點同步更新可能有延遲
  • 4. 依賴第三方:若 CDN 供應商發生故障,可能影響整個網站可用性
  • 5. 地理限制:某些地區可能因政策限制而無法使用特定 CDN 服務

🔥 常見面試題目

(一)如何判斷是否需要使用 CDN?

  • 1. 用戶分布廣:用戶來自不同國家或地區時,CDN 能大幅提速
  • 2. 靜態資源多:網站有大量圖片、CSS、JS 等檔案
  • 3. 流量不穩定:經常有流量高峰,如促銷活動
  • 4. 速度很重要:如電商網站,速度直接影響銷售
  • 5. 成本效益:小網站需評估投入是否值得