通過自訂Cachekey,可以將訪問同一個檔案的一類請求轉化為統一的Cachekey,避免不同請求緩衝為不同檔案的問題,降低回源率。本文為您詳細介紹配置自訂Cachekey功能的操作步驟。

功能介紹

Cachekey是一個檔案在CDN節點上緩衝時唯一的身份ID,每個在CDN節點上緩衝的檔案都對應一個Cachekey。檔案的Cachekey預設為用戶端請求的URL(帶參數)。

情境一:

客戶的不同請求的URL中含有複雜的參數,因此即使多個請求訪問的是同一個檔案,但由於URL參數不同,CDN節點會視為請求不同檔案而將不同請求緩衝成多個檔案,造成回源的請求增加。

可通過自訂Cachekey規則將同一類請求的Cachekey統一,降低回源率。

情境二:

用戶端請求的URL一樣時,CDN將視為請求同一個檔案。但實際上請求的Http Header中攜帶了client欄位區分了用戶端系統,希望請求不同檔案。

此時可通過自訂Cachekey將client欄位的值拼接至Cachekey,兩個請求即可識別為2個不同的Cachekey。

操作步驟

  1. 登入 CDN控制台
  2. 域名管理頁面,單擊目標網域名稱對應的 管理
  3. 在指定網域名稱的左側導覽列,單擊 缓存配置
  4. 自訂Cachekey 頁簽配置Cachekey。
    说明 支援對URI、參數操作、HTTP HEADER進行修改,同時支援自訂變數,從請求中提取需要的欄位。最終的Cachekey將由URI、參數操作、HTTP HEADER、自訂變數四部分組合而成。
  5. 單擊 確定

樣本

URI

用戶端的請求 http://yourdomain.com/a/b/test.jpg http://yourdomain.com/a/b/c/test.jpg 將視為請求同一個檔案,該檔案的Cachekey為 http://yourdomain.com/c/test.jpg

参数操作

用戶端的請求 http://yourdomain.com/a/b/test.jpg?delete_par=1&modify_par=1 將按規則添加 add_par=1 ,刪除 delete_par ,將 modify_par 的值修改為 2 ,最終轉化為 http://yourdomain.com/a/b/test.jpg?modify_par=2&add_par=1
注意 參數操作中,如對同一個變數同時進行了多個操作,則各種操作的生效優先順序:新增>刪除>僅保留>修改。

HTTP Header

用戶端請求的HTTP HEADER的 User-Agent Accept-Language 的值將被拼接到Cachekey中。例如請求 http://yourdomain.com/a/b/test.jpg 中的 User-Agent=Mozilla/5.0 (Linux; X11) Accept-Language=en ,則該請求的Cachekey為: http://yourdomain.com/a/b/test.jpgMozilla/5.0(Linux;X11)en

自定义变量

樣本一

變數名為 language ,來源為 Request Header ,來源欄位名為 Accept-Language ,匹配規則為 ([%w]+),([%w]+) ,Variant 運算式為 $1aa

用戶端的請求 http://yourdomain.com/a/b/test.jpg 且攜帶HTTP要求標頭 Accept-Language=en,ch ,則匹配規則將匹配到 en 賦值給Variant 運算式中的 $1 。Variant 運算式還將在末尾拼接上 aa ,得到 enaa 的變數並取別名為 language ,拼接在URL後方形成最終的cachekey: http://yourdomain.com/a/b/test.jpgenaa
说明 Variant 運算式中的 $n 的含義是匹配規則中第 n 個括弧所匹配到的內容。例如樣本一中 Accept-Language=en,ch ,匹配規則為 ([%w]+),([%w]+) ,則 $1=en $2=ch

樣本二

變數名為 expired ,來源為 Request Cooike ,來源欄位名為 a ,匹配規則為 [%w]+:(.*) ,Variant 運算式為 $1

用戶端的請求 http://yourdomain.com/a/b/test.jpg 且攜帶 Cookie a=expired_time:12635187 ,則匹配規則將匹配到 12635187 賦值給Variant 運算式中的 $1 並取別名為 expired ,拼接在URL後方形成最終的cachekey: http://yourdomain.com/a/b/test.jpg12635187

樣本三

同時設定URI規則和自訂變數。

URI:

將所有URI符合 /abc/.*/abc 的請求都合并成 /abc

自訂變數:

變數名為 testname ,來源為 Path ,匹配規則為 /abc/xyz/(.*) ,Variant 運算式為 $1

用戶端的請求URL http://yourdomain.com/abc/xyz/abc/test.jpg ,按URI的配置Cachekey將被合并成 http://yourdomain.com/abc/test.jpg , 然後根據自訂變數的配置該URL將會命中 /abc/xyz/(.*) ,此時 $1 將被賦值為 abc 並拼接到Cachekey中,形成最終的cachekey: http://yourdomain.com/abc/test.jpgabc ,從而達到兩個規則群組合使用,實現更複雜的緩衝邏輯。

注意 自訂Cachekey功能不會修改回源的URL,僅會修改請求的緩衝標識,回源的請求和用戶端發起的請求內容保持一致。