引入 CDN 後,最關鍵的問題是:如何保證邊緣節點內容與源站同步? 答案在於「刷新時間策略」的精細化配置。
CDN 節點不會實時同步源站,而是依賴 TTL(Time To Live,生存時間) 機制:
Last-Modified/Expires/Cache-Control: max-age)If-None-Match/If-Modified-Since) → 304 Not Modified 繼續用舊緩存,或 200 OK 更新緩存| 內容類型 | 推薦 TTL | 刷新方式 | 典型場景 |
|---|---|---|---|
| 靜態資源(JS/CSS/圖片/字體/視頻) | 30 天~1 年 | 版本號/哈希值重命名 + 主動預熱 | 前端構建產物、CDN 加速靜態資產 |
| 半靜態頁面(文章詳情、商品頁、幫助文檔) | 10 分鐘~1 小時 | 發布/更新時 API 主動刷新目錄或 URL | CMS 文章、電商 SKU 頁、知識庫 |
| 高頻動態數據(評論、價格、庫存、個性化推薦) | 0 秒(不緩存)或 1-5 分鐘 | Edge Side Includes (ESI) / AJAX 回源 / 短 TTL | 實時價格、秒殺倒計時、用戶專屬內容 |
| API 接口響應 | 視業務而定 | Cache-Tag 標記 + 標籤級批量失效 | 微服務網關、BFF 聚合層 |
https://cdn.example.com/assets/app.v2.js,適合發布新版本靜態資源。https://cdn.example.com/images/2024/,批量失效某路徑下所有資源,適合整站改版、目錄遷移。Cache-Tag: article-123,category-tech,刷新時只需提交標籤 article-123,所有攜帶該標籤的緩存瞬間失效,極其高效。# 伪代碼:CI/CD 流水線中集成 CDN 刷新
deploy():
build_frontend() # 生成帶 hash 的文件名
upload_to_origin() # 推送到源站/OSS
cdn_purge_urls([ # 主動刷新關鍵入口
"https://cdn.example.com/index.html",
"https://cdn.example.com/manifest.json"
])
# 靜態資源因文件名變更,無需刷新,用戶自然獲取新版
Host、Query String、Cookie 等維度,避免不同用戶看到彼此緩存(如購物車)。CDN 內容同步的本質是 「緩存過期策略 + 主動刷新機制」的組合拳。靜態資源用長 TTL + 文件名版本化;動態頁面用短 TTL + 發布時 API 刷新;高頻數據用不緩存或 ESI 片段緩存。掌握這套「分層緩存、精準失效」思想,才能真正發揮 CDN 的加速威力,而不成為業務更新的絆腳石。
網路流量監控利器 NTOP 實戰部署指南:從原理到異常流量自動化分析
網站訪問出現「Directory Listing Denied」錯誤原因與解決方法
Ubuntu Linux 安裝 Zend Studio 5.5.1 完整圖文教學(含中文亂碼解決)
Linux 學習筆記:ProFTPD 進階配置(二)—— incoming 目錄權限控制與完整配置檔範例
HP ProLiant DL160 G6 伺服器常見問題解答 (FAQ) 完整版
PHP register_globals 與 session.auto_start 安全配置:獨立伺服器與虛擬主機雙軌修復指南