全部產品
Search
文件中心

:自訂CacheKey

更新時間:Apr 09, 2025

Cachekey是一個檔案在全站加速節點上緩衝時唯一的身份ID,預設為用戶端請求的URL(帶參數)。通過自訂Cachekey,可以將訪問同一個檔案的多個URL轉化為統一的Cachekey,避免多個URL請求緩衝為不同檔案的問題,降低回源率,節省回源流量。通過本文,您可以瞭解配置自訂Cachekey功能的操作步驟。

使用情境

情境一:

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

通過自訂Cachekey規則將同一類請求的Cachekey統一,降低回源率,節省回源流量。image04

情境二:

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

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

操作步驟

  1. 登入DCDN控制台

  2. 域名管理頁面,單擊目標網域名稱對應的配置

  3. 在指定網域名稱的左側導覽列,單擊缓存配置

  4. 自訂Cachekey頁簽配置Cachekey。

    說明
    • 自訂Cachekey功能支援對URI、參數操作、Http Header進行修改,同時支援自訂變數,從請求中提取需要的欄位。最終的Cachekey將由URI、參數操作、Http Header、自訂變數四部分組合而成。

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

    自訂Cachekey

  5. 單擊確定

樣本

URI

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

參數操作

用戶端的請求http://example.com/a/b/image_01.jpg?delete_par=1&modify_par=1 將按規則添加add_par=1,刪除delete_par,將modify_par的值修改為2,最終轉化為http://example.com/a/b/image_01.jpg?modify_par=2&add_par=1

重要

參數操作中,如對同一個變數同時進行了多個操作,則各種操作的生效優先順序:新增>刪除>僅保留>修改。

參數操作

HTTP Header

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

自訂變數

樣本一:

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

用戶端的請求http://example.com/a/b/image_01.jpg且攜帶HTTP要求標頭Accept-Language=en,ch ,則匹配規則將匹配到en賦值給Variant 運算式中的$1。Variant 運算式還將在末尾拼接上aa,得到enaa的變數並取別名為language,拼接在URL後方形成最終的cachekey:http://example.com/a/b/image_01.jpgenaa

說明

Variant 運算式中的$n的含義是匹配規則中第n個括弧所匹配到的內容。例如樣本一中Accept-Language=en,ch,匹配規則為([%w]+),([%w]+),則$1=en$2=ch

樣本二:

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

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

樣本三:

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

URI:

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

自訂變數:

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

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