CDN快取命中率低會導致來源站點壓力大,靜態資源訪問效率低。您可以根據導致CDN快取命中率低的具體原因,選擇對應的最佳化策略來提高CDN的快取命中率。
背景資訊
CDN通過將靜態資源緩衝在CDN節點上實現資源訪問加速。當用戶端訪問某資源時,如果CDN節點上已經緩衝了該資源,使用者請求會命中CDN節點上的緩衝,直接從緩衝中擷取資源返回給使用者,可避免通過較長的鏈路回源,提高資源的響應速度和降低來源站點的頻寬壓力。如果CDN快取命中率低,會影響使用者體驗和增加來源站點的頻寬壓力。
CDN快取命中率包括位元組命中率和請求命中率:
- 位元組命中率=CDN快取命中響應的位元組數÷CDN所有請求響應的位元組數
说明 位元組命中率越低,回源流量越大,來源站點的流出流量越大,來源站點的頻寬資源以及其他的負載越大,因此回源流量代表了來源站點伺服器接收到的負載壓力,在業務使用中主要關心位元組命中率。
- 請求命中率=CDN快取命中的請求數÷CDN所有的請求數
查看CDN快取命中率
查看CDN快取命中率的方式如下:
- 方法一:通過控制台查看
- 方法二:調用API查看
- 資源監控功能對應的API
API 描述 DescribeDomainHitRateData 擷取加速網域名稱的位元組命中率資料,支援擷取最近90天的資料。 DescribeDomainReqHitRateData 擷取加速網域名稱的請求命中率資料,支援擷取最近90天的資料。 - 即時監控功能對應的API
API 描述 DescribeDomainRealTimeByteHitRateData 擷取加速網域名稱1分鐘粒度的位元組命中率資料,支援查詢7天內的資料。 DescribeDomainRealTimeReqHitRateData 擷取加速網域名稱1分鐘粒度的請求命中率資料,支援查詢7天內的資料。
- 資源監控功能對應的API
提高CDN快取命中率
下表列出了影響CDN快取命中率的因素和提高CDN快取命中率的方法。
策略 | 影響因素與應用情境 | 配置方法 |
---|---|---|
業務高峰前預熱熱門資源 | 影響因素:營運大型活動或新版本安裝包發布前,沒有提前將資源預熱到CDN節點,大量資源需要從來源站點擷取,導致CDN快取命中率低。
應用情境:
|
預熱資源 |
合理配置緩衝到期時間:
|
影響因素:
應用情境:使用者在來源站點發布了靜態資源,CDN節點沒有將資源緩衝下來,或者CDN節點上緩衝的資源很快就失效了。 |
配置緩衝到期時間 |
提高資源的訪問效率 | 影響因素:當URL請求中帶有 queryString 或其他可變參數時,訪問同一個資源的不同URL(URL攜帶的參數不同)會重新回源,導致CDN快取命中率低。
應用情境:希望通過不同的URL(URL攜帶的參數不同),可以訪問到同一個資源。 |
|
提高指定資源的訪問效率 | 影響因素:使用者下載安裝包可能下載一半就停止下載,或者觀看視頻只看了一部分就停止觀看,即使用者只需要訪問資源檔指定範圍內的部分內容,但是CDN節點會向來源站點請求整個檔案,從而使得CDN節點從來源站點下載的內容大於響應給使用者的內容,導致快取命中率低。
應用情境:使用者下載應用安裝包或者觀看視頻資源。 |
配置Range回源 |
查看快取命中狀態日誌
在CDN的請求日誌中,記錄了所有CDN請求的快取命中狀態。詳細日誌格式,請參見 日誌下載。
快取命中狀態欄位說明:
日誌樣本:
- HIT:表示命中緩衝。
- MISS:表示未命中緩衝。
说明 命中狀態僅表示CDN L1節點的命中狀態。例如,CDN L1節點未命中緩衝,L2節點命中緩衝,日誌中仍顯示MISS。
26/Jun/2019:10:38:19 +0800] 192.168.53.146 - 1542 "-" "GET http://www.aliyun.com/index.html" 200 191 2830 MISS "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" "text/html"
您也可以調用 DescribeCdnDomainLogs介面,擷取加速網域名稱的日誌資訊。