CDN
CDN 透過邊緣節點分發內容,降低延遲並提升快取命中率。對全球 SEO 與 Core Web Vitals 很重要。
定義
CDN(內容傳遞網路)透過全球邊緣節點就近提供資源,降低延遲並提升可靠性。對 SEO 而言,CDN 能改善 TTFB/LCP、提升可用性,並降低大流量或爬蟲抓取時的源站壓力。
為什麼重要
- 大幅降低全球 TTFB — 用戶連到最近的邊緣節點,延遲可從 500ms 降到 50ms
- 改善 LCP 和 Core Web Vitals — 資源更快到達,Google 評分更高
- 吸收流量尖峰 — 病毒傳播或大型活動時,CDN 保護源站不被打掛
- 提升爬蟲效率 — Googlebot 抓取時不會壓垮源站,抓取預算更充裕
- DDoS 防護 — 邊緣網路吸收惡意流量,源站保持安全
- SSL/TLS 終止 — 在邊緣處理加密,減少源站 CPU 負擔
- 降低頻寬成本 — 快取命中不消耗源站流量,長期節省顯著
怎麼做(實作重點)
- 選擇適合的 CDN(Cloudflare、Fastly、AWS CloudFront、Vercel Edge)
- 設定正確的快取規則:靜態資源長效快取,HTML 用 SWR 或短 TTL
- 啟用自動壓縮(gzip/Brotli)減少傳輸量
- 設定 Cache-Control 和 s-maxage 讓 CDN 與瀏覽器快取分開管理
- 監控快取命中率(Cache Hit Ratio)— 目標 > 90%
- 設定 purge/invalidate 機制,確保內容更新時能清除舊快取
- 用 Real User Monitoring(RUM)追蹤實際用戶的 TTFB 和 LCP
範例
text
# Cloudflare Pages 預設即有 CDN
# 只需在 public/_headers 設定快取策略
# public/_headers
/*
Cache-Control: public, max-age=0, must-revalidate
X-Robots-Tag: all
/assets/*
Cache-Control: public, max-age=31536000, immutable
# wrangler.toml(可選:設定 cache TTL)
[vars]
ASSETS_BROWSER_TTL = 31536000
# 驗證 CDN 快取(curl)
curl -I https://your-site.pages.dev/assets/bundle.js
# 看 cf-cache-status: HIT 代表快取命中json
// CloudFront Distribution 設定摘要
{
"Origins": [{
"DomainName": "your-origin.example.com",
"OriginProtocolPolicy": "https-only"
}],
"DefaultCacheBehavior": {
"ViewerProtocolPolicy": "redirect-to-https",
"CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6",
// CachingOptimized policy: TTL 86400s, gzip/br enabled
"Compress": true
},
"PriceClass": "PriceClass_100",
// 只用北美+歐洲節點(成本較低)
"HttpVersion": "http2and3"
}常見問題
關於這個詞彙的常見問答。