CDN快取命中率低會導致來源站點壓力大,靜態資源訪問效率低。您可以根據導致CDN快取命中率低的具體原因,選擇對應的最佳化策略來提高CDN的快取命中率。
背景資訊
CDN通過將靜態資源緩衝在CDN節點上實現資源訪問加速。當用戶端訪問某資源時,如果CDN節點上已經緩衝了該資源,使用者請求會命中CDN節點上的緩衝,直接從緩衝中擷取資源返回給使用者,可避免通過較長的鏈路回源,提高資源的響應速度和降低來源站點的頻寬壓力。如果CDN快取命中率低,會影響使用者體驗和增加來源站點的頻寬壓力。
CDN緩衝位元組命中率:
位元組命中率=(L1的邊緣節點響應流量-回源的邊緣節點響應流量)/L1的邊緣節點響應流量
說明位元組命中率越低,回源流量越大,來源站點的流出流量越大,來源站點的頻寬資源以及其他的負載越大,因此回源流量代表了來源站點伺服器接收到的負載壓力,在業務使用中主要關心位元組命中率。
請求命中率=CDN快取命中的請求數÷CDN所有的請求數
重要range分區回源情況下,命中率指標建議參考位元組命中率。
查看CDN快取命中率
提高CDN快取命中率
下表列出了影響CDN快取命中率的因素和提高CDN快取命中率的方法。
策略 | 影響因素與應用情境 | 配置方法 |
業務高峰前預熱熱門資源 | 影響因素:營運大型活動或新版本安裝包發布前,沒有提前將資源預熱到CDN節點,大量資源需要從來源站點擷取,導致CDN快取命中率低。 應用情境:
| |
合理配置緩衝到期時間:
| 影響因素:
應用情境:使用者在來源站點發布了靜態資源,CDN節點沒有將資源緩衝下來,或者CDN節點上緩衝的資源很快就失效了。 | |
去除URL中問號後的參數緩衝 | 影響因素:當URL請求中帶有queryString或其他可變參數時,訪問同一個資源的不同URL(URL攜帶的參數不同)會重新回源,導致CDN快取命中率低。 應用情境:希望通過不同的URL(URL攜帶的參數不同),可以訪問到同一個資源。 | |
大檔案設定分區回源策略 | 影響因素:使用者下載安裝包可能下載一半就停止下載,或者觀看視頻只看了一部分就停止觀看,即使用者只需要訪問資源檔指定範圍內的部分內容,但是CDN節點會向來源站點請求整個檔案,從而使得CDN節點從來源站點下載的內容大於響應給使用者的內容,導致快取命中率低。 應用情境:使用者下載應用安裝包或者觀看視頻資源。 | |
處理來源站點不緩衝標題 | 影響因素:來源站點返回了不緩衝的回應標頭(如 Cache-Control: max-age=0、Cache-Control: no-cache、Cache-Control: private 等),CDN 會遵循來源站點指示不對該資源進行緩衝,導致所有請求都回源到來源站點,快取命中率降低。典型情境:來源站點為靜態檔案(圖片、JS、CSS 等)配置了 Cache-Control: max-age=0 或 Cache-Control: no-cache 回應標頭,導致 CDN 節點無法緩衝這些靜態資源。 | 方法一(推薦):修改來源站點伺服器配置,去掉靜態資源回應標頭中的 Cache-Control: max-age=0 或 Cache-Control: no-cache 等不緩衝標題,為靜態資源配置合理的緩衝時間長度(如 Cache-Control: max-age=2592000)。 方法二:在網域名稱管理頁面,單擊目標加速網域名稱,進入緩衝配置頁簽,在緩衝到期時間中添加緩衝規則,開啟忽略來源站點不緩衝標題選項。開啟後,CDN 將忽略來源站點返回的不緩衝標題,按照 CDN 自身配置的緩衝策略進行緩衝。 說明 忽略來源站點不緩衝標題功能開啟後,CDN 將會忽略來源站點響應的不緩衝標題(例如 Cache-Control: no-cache 等),按照您在 CDN 控制台配置的緩衝到期時間規則進行緩衝。到期時間最多可設定為 3 年。 說明 為進一步提升快取命中率,建議在视频相关中將 Range 回源設定為跟隨客戶端Range請求,避免全量回源影響命中率。 |
其他命中率最佳化策略 | 除了以上幾種常用的命中率最佳化措施以外,阿里雲CDN還有其他的最佳化措施,這些措施可以根據不同的業務情境來配置,例如:中心302調度、邊緣302調度、合并回源、共用快取等。其中,**共用快取**功能允許同帳號下的多個加速網域名稱共用 CDN 節點上的緩衝資源。當您有多個網域名稱需要同名的 JS/CSS 檔案且各來源站點內容完全一致時,可通過共用快取功能讓這些網域名稱共用同一份緩衝,從而提升快取命中率。新增網站時,只需確保其資源路徑與現有加速網域名稱的資源結構對齊,無需重複配置 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"您也可以調用查詢離線日誌下載地址介面,擷取加速網域名稱的日誌資訊。