階段 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