配置自定義緩存鍵(Cachekey),開發者可以根據用戶請求中的不同部分(例如查詢字符串、HTTP請求標頭或者Cookie等)制定規則來生成Cachekey,將訪問同一個文件的一類請求轉化為統一的Cachekey,避免將同一類請求緩存為不同文件的問題,從而提高緩存的命中率,降低回源率,減少請求的響應時間和帶寬消耗。
背景信息
自定義Cachekey功能不會修改回源的URL,僅會修改請求的緩存標識,回源的請求和客戶端發起的請求內容保持一致。
Cachekey是一個文件在ESA節點上緩存時唯一的身份ID,每個在ESA節點上緩存的文件都對應一個Cachekey。文件的Cachekey默認為客戶端請求的URL(帶參數)。
使用場景
客戶的不同請求URL中含有復雜的參數,因此即使多個請求訪問的是同一個文件,但由于URL參數不同,ESA節點會將這些不同的請求視為訪問不同的文件,并緩存成多個文件,導致回源請求增加。
可通過自定義Cachekey功能設置忽略查詢字符串,將同一類請求的Cachekey統一,降低回源率。
客戶端請求的URL一樣時,ESA將視為請求同一個文件。但實際上請求的Http Header中攜帶了client字段區分了客戶端系統,希望請求不同文件。
此時可通過自定義Cachekey功能根據客戶端類型來生成不同的Cachekey,兩個請求即可識別為2個不同的Cachekey。
操作步驟
登錄ESA控制臺。
在左側導航欄,單擊站點管理。
在站點管理頁面,單擊目標站點名稱,或對應站點操作列的詳情。
在左側導航欄,選擇
。單擊新增規則,填寫規則名稱。
在當請求匹配以下規則時...區域設置要匹配的用戶請求特征,具體配置規則請參見規則。
在繞過緩存區域,設置是否繞過緩存,具體請參見繞過緩存。
在自定義Cachekey區域,單擊配置,設置以下參數。
參數
說明
對查詢字符串排序
選擇是否開啟對查詢字符串排序功能,詳情請參見查詢字符串排序。
查詢字符串
設置去除請求URL中攜帶的
?
以及?
之后的查詢字符串,詳情請參見查詢字符串。HTTP請求標頭
包括這些標頭名稱及其值:指定的HTTP請求標頭名稱及其值將會加入Cachekey。
檢查是否存在:檢查指定的HTTP請求標頭是否存在。如果存在,把HTTP Header名稱加入Cachekey。
Cookie
包括這些Cookie名稱及其值:指定的Cookie參數名稱及其值將會加入Cachekey。
檢查是否存在:檢查指定的Cookie參數是否存在;如果存在,把Cookie參數名稱加入Cachekey。
用戶
設備類型:根據客戶端User-Agent信息來識別客戶端類型,然后根據客戶端類型來生成Cachekey。
國家/地區:根據客戶端IP來識別客戶端所在的國家/地區,然后根據國家/地區來生成Cachekey。
語言:根據客戶端請求中攜帶的Accept-Language信息來識別客戶端語言,然后根據語言類型來生成Cachekey。
單擊確定。
配置示例
示例場景 |
|
功能配置 |
|
生成Cachekey | 每個參數生成的Cachekey片段為:
所以,實際拼接生成的Cachekey為: |