Skip to content
所有文章 ‹ Part 01 of 18 · Cache 不是方塊,是一條鏈
工程 · 1 min read

CDN 是什麼

CDN 是一群靠近使用者的 edge server。pull 和 push 兩種模式怎麼把檔案送到 edge,以及為什麼副本新不新,全由 cache 規則決定。

CDN 是一群放在世界各地的 edge server。使用者向最近的 edge 要檔案,不用每次都跑回 origin。

面試時,我只會說「加一層 CDN 就會變快」。但它為什麼會變快?檔案又是怎麼跑到 edge 上的?這是我追查的第一步。

Origin server(一個地點) Edge server(東京) Edge server(洛杉磯) Edge server(法蘭克福) Edge server(新加坡) 使用者從最近的 edge 拿到檔案
一個 origin 供應多台 edge server,使用者從最近的那一台拿檔案。
  • Origin:檔案真正存放的地方,例如 storage bucket 或應用程式伺服器。
  • Edge server:CDN 放在使用者附近的伺服器。它存一份檔案的副本。
  • TTL(time to live):edge 可以保留副本多久。時間到了,edge 就要再問 origin(Cache 的新鮮度:fresh、stale 和 304)。

兩種模式決定檔案怎麼到達 edge:

模式做法代價
Pull CDN第一次有人要時,edge 才去 origin 拿第一次比較慢
Push CDN檔案更新時,origin 主動上傳到 CDNorigin 要自己管上傳

我工作用的 CDN 是 pull 模式。所以 edge 有沒有副本、副本新不新,全由 cache 規則決定。後面整個系列,都在追這些規則。

CDN 變快的原因很簡單:檔案離使用者近。難的是決定副本什麼時候該換。

參考來源:ByteByteGo: How does CDN work, System Design Primer: CDN

延伸閱讀:一個 HTTP request、Cache 的新鮮度:fresh、stale 和 304、CDN 名詞一頁表。或回到系列總覽。

↑↓ 移動 ↵ 開啟 esc 關閉