CDN 緩存説白了就是把你服務器上的內容搬到離用户更近的節點上。配得好,源站壓力能降 95% 以上,頁面秒開;配不好,用户看到的可能是過期內容,或者每個請求都回源,CDN 等於白接。這篇文章講講怎麼把緩存策略調到位。

一、CDN緩存原理

緩存工作流程

  1. 用户請求資源,CDN節點接收請求
  2. 節點檢查本地是否有該資源的緩存
  3. 如果有緩存且未過期(命中),直接返回
  4. 如果沒有緩存或已過期(未命中),回源獲取
  5. 將獲取的資源緩存到節點,返回給用户

緩存命中率:業務性能的風向標

緩存命中率 = 命中請求數 / 總請求數

它是衡量 CDN 效率最直觀的指標。通常情況下,對於圖片、JS/CSS 等純靜態資產,理想的緩存命中率應穩定在 98% 以上。如果命中率偏低,往往意味着緩存規則、URL 規範性或回源邏輯存在優化空間。

二、緩存控制方式

1. HTTP緩存頭

源站可以通過HTTP頭控制緩存行為:

  • Cache-Control:最為核心的控制字段,如 public, max-age=31536000 實現一年的深度緩存。
  • Expires:指定資源過期的絕對 GMT 時間,作為 Cache-Control 的兼容性補充。
  • ETag/If-None-Match:通過文件唯一指紋進行校驗,避免在資源未變更時重複傳輸數據。
  • Last-Modified:記錄資源最後的修改時間,協助節點進行條件請求(Conditional Get)校驗。

2. CDN規則配置

在CDN控制枱配置緩存規則,可以覆蓋源站設置:

  • 按文件後綴配置:如.jpg/.css/.js緩存7天
  • 按目錄配置:如/static/目錄緩存30天
  • 按完整路徑配置:特定URL不緩存

三、緩存策略建議

靜態資源

資源類型 建議緩存時間
圖片(jpg/png/gif/webp) 30天
CSS/JS文件 7-30天(配合版本號)
字體文件 30天
視頻/音頻 7-30天

動態內容

  • 完全不緩存:登錄接口、支付接口、個人數據
  • 短期緩存:首頁(5分鐘)、列表頁(1-5分鐘)
  • 按需刷新:文章詳情頁,發佈時主動刷新

四、提高命中率的技巧

1. URL規範化

  • 統一大小寫:/Image.jpg 和 /image.jpg 是不同緩存
  • 規範參數順序:?a=1&b=2 和 ?b=2&a=1 是不同緩存
  • 移除無意義參數:如隨機數、時間戳

2. 忽略查詢字符串

對於不影響內容的參數,可以配置CDN忽略:

  • 忽略全部參數:所有?後的參數不影響緩存
  • 忽略指定參數:如utm_source等統計參數

3. 分片緩存

對於大文件(如視頻),啓用分片緩存可以提高命中率和加載速度。

4. 預熱緩存

新上線內容可以先預熱緩存,避免用户首次訪問回源:

  • 主動推送URL到CDN預熱
  • 定時任務觸發緩存

五、緩存刷新

內容更新後需要刷新CDN緩存:

刷新方式

  • URL刷新:刷新特定URL的緩存
  • 目錄刷新:刷新整個目錄下的緩存
  • 版本號策略:文件名加版本號,如style.v2.css

飛盾雲邊緣計算與智能緩存優勢

  • AI 智能預判緩存:自主研發的流量建模算法,自動識別熱點資源並執行全局分發預熱。
  • 可編程 Cache Rules:支持基於 Request Header、Cookie 或特定 URL 參數的精準緩存邏輯定製。
  • 秒級全球緩存刷新:依託 Anycast 同步網絡,實現全網緩存內容的毫秒級清除與更新。
  • 動態路徑加速整合:在緩存未命中時,自動切換至最優 BGP 鏈路進行回源,確保“穿透”體驗同樣極速。
  • 99.9% 穩定命中率:通過多級緩存架構與分片預取技術,將源站負載降低至極限。

總結

合理的CDN緩存策略是網站性能優化的關鍵。根據資源類型設置合適的緩存時間,規範URL格式,及時刷新更新內容,可以在保證內容新鮮度的同時最大化緩存效益。