階段 8 · 上線與維運(部署)

CDN

把靜態資源快取到全球節點,讓使用者更快載入。

先用一句話理解

英文全名:Content Delivery Network

把靜態資源快取到全球節點,讓使用者更快載入。

打個比方

像在各地開分店,不用每個客人都跑總店。

什麼時候會遇到

網站有圖片、CSS、JS、全球使用者或大量流量時。

再往深一點看

CDN(Content Delivery Network)是把你的靜態資源(圖片、字體、CSS、JS bundle)複製存放到全球各地的伺服器節點,讓使用者從距離最近的節點取得檔案,而不是每次都跑回你的原始伺服器。CDN 和 cache(快取)解決的問題層次不同:cache 是「暫存已計算的資料避免重複運算」,CDN 是「把靜態檔案搬到離使用者近的地方縮短傳輸距離」,兩者可以同時存在。現代 hosting 平台(Vercel、Netlify)自帶 CDN,你 deploy 的靜態資源自動分發到全球節點;Cloudflare 則可以在任何 hosting 前面加一層 CDN,同時還能擋 DDoS 攻擊、提供 WAF 防護。CDN 的副作用是快取失效問題:你更新了圖片但 CDN 還在供應舊版本,要手動 purge cache 或在檔案名稱加版本雜湊(hash)來強制更新。

舉個例子

你的 Next.js 網站圖片放在 Cloudflare R2,透過 Cloudflare CDN 分發,台灣使用者從台灣節點拿圖、美國使用者從美國節點拿,比全部繞回你的原始伺服器快三到五倍,且 Cloudflare 會在流量突增時自動吸收壓力,原始伺服器不會被打垮。

常見誤解

  • - 更新了 CDN 上的圖片或 JS 檔案,但 CDN 繼續供應快取的舊版本,使用者看到的還是舊版,要手動到 Cloudflare 後台 purge cache 或等快取自然過期。
  • - 把需要登入驗證的頁面或個人化內容也讓 CDN 快取,導致用戶 A 看到的是用戶 B 的快取資料,造成資料洩漏。
  • - 沒有設定 CDN 就讓大流量直打原始伺服器,活動推廣期間流量暴增,serverless function 被打到 timeout 或費用暴衝。

相關名詞

相關服務

VercelCloudflare PagesAWS

相關工具