CDN緩存命中率低會導致源站壓力大,靜態資源訪問效率低。您可以根據導致CDN緩存命中率低的具體原因,選擇對應的優化策略來提高CDN的緩存命中率。

背景信息

CDN通過將靜態資源緩存在CDN節點上實現資源訪問加速。當客戶端訪問某資源時,如果CDN節點上已經緩存了該資源,用戶請求會命中CDN節點上的緩存,直接從緩存中獲取資源返回給用戶,可避免通過較長的鏈路回源,提高資源的響應速度和降低源站的帶寬壓力。如果CDN緩存命中率低,會影響用戶體驗和增加源站的帶寬壓力。

CDN緩存命中率包括字節命中率和請求命中率:
  • 字節命中率=CDN緩存命中響應的字節數÷CDN所有請求響應的字節數
    說明 字節命中率越低,回源流量越大,源站的流出流量越大,源站的帶寬資源以及其他的負載越大,因此回源流量代表了源站服務器接收到的負載壓力,在業務使用中主要關心字節命中率。
  • 請求命中率=CDN緩存命中的請求數÷CDN所有的請求數

查看CDN緩存命中率

查看CDN緩存命中率的方式如下:
  • 方法一:通過控制臺查看
    CDN控制臺提供的緩存命中率監控為字節命中率,詳細信息如下:
    • 通過資源監控功能查詢
      可查詢數據的時間范圍較大,適合查看較長周期(例如30天)內的命中率情況。時間粒度為5分鐘的情況下,數據延遲15分鐘左右。詳細信息,請參見資源監控命中率
    • 通過實時監控功能查詢
      可查詢數據的時間范圍較小,適合查看較短周期(例如1小時)內的實時命中率情況。時間粒度為1分鐘的情況下,數據延遲3分鐘左右。詳細信息,請參見實時監控質量監控
  • 方法二:調用API查看

提高CDN緩存命中率

下表列出了影響CDN緩存命中率的因素和提高CDN緩存命中率的方法。
策略影響因素與應用場景配置方法
業務高峰前預熱熱門資源影響因素:運營大型活動或新版本安裝包發布前,沒有提前將資源預熱到CDN節點,大量資源需要從源站獲取,導致CDN緩存命中率低。
應用場景:
  • 運營活動

    運營一個大型活動時,提前將活動頁涉及到的靜態資源預熱至CDN節點,活動開始后用戶訪問的所有靜態資源均已緩存至CDN加速節點,由加速節點直接響應。

  • 安裝包發布

    新版本安裝包或升級包發布前,提前將資源預熱至CDN加速節點,產品正式上線后,海量用戶的下載請求將直接由CDN加速節點響應,提升下載速度,大幅度降低源站壓力,提升用戶體驗。

預熱資源
合理配置緩存過期時間:
  • 不常更新的靜態文件(例如,圖片類型、應用下載類型等),建議設置1個月以上。
  • 頻繁更新的靜態文件(例如,JS、CSS等),根據實際業務情況設置。
  • 動態文件(例如,PHP、JSP、ASP等),建議設置為0s,即不緩存。
影響因素:
  • CDN上未配置緩存策略,所有用戶請求都需要回源站。
  • CDN上配置的緩存過期時間過短,緩存資源頻繁過期,導致緩存命中率低。

應用場景:用戶在源站發布了靜態資源,CDN節點沒有將資源緩存下來,或者CDN節點上緩存的資源很快就失效了。

配置緩存過期時間
去除URL中問號后的參數緩存影響因素:當URL請求中帶有queryString或其他可變參數時,訪問同一個資源的不同URL(URL攜帶的參數不同)會重新回源,導致CDN緩存命中率低。

應用場景:希望通過不同的URL(URL攜帶的參數不同),可以訪問到同一個資源。

忽略參數
大文件設置分片回源策略影響因素:用戶下載安裝包可能下載一半就停止下載,或者觀看視頻只看了一部分就停止觀看,即用戶只需要訪問資源文件指定范圍內的部分內容,但是CDN節點會向源站請求整個文件,從而使得CDN節點從源站下載的內容大于響應給用戶的內容,導致緩存命中率低。

應用場景:用戶下載應用安裝包或者觀看視頻資源。

配置Range回源
其他命中率優化策略除了以上幾種常用的命中率優化措施以外,阿里云CDN還有其他的優化措施,這些措施可以根據不同的業務場景來配置,例如:中心302調度、邊緣302調度、合并回源、共享緩存等。由阿里云售后工程師在后臺配置。

查看緩存命中狀態日志

在CDN的請求日志中,記錄了所有CDN請求的緩存命中狀態。詳細日志格式,請參見下載日志

緩存命中狀態字段說明:
  • HIT:表示命中緩存。
  • MISS:表示未命中緩存。
說明 命中狀態僅表示CDN L1節點的命中狀態。例如,CDN L1節點未命中緩存,L2節點命中緩存,日志中仍顯示MISS。
日志示例:
26/Jun/2019:10:38:19 +0800] 192.168.53.146 - 1542 "-" "GET http://example.aliyundoc.com/index.html" 200 191 2830 MISS "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://example.com/robot/)" "text/html"

您也可以調用DescribeCdnDomainLogs接口,獲取加速域名的日志信息。