背景信息
如果您已經接入DCDN并配置了緩存規則,同時啟用了WAF令牌校驗,但是WAF在令牌校驗時會在URL中隨機插入參數,導致請求未能命中DCDN緩存規則,直接訪問后端源站。這會增加源站的負載和壓力,導致性能下降、響應時間延長,并增加潛在的安全風險。為了解決這一問題,您可以通過自定義CacheKey忽略這些參數,從而繼續利用DCDN緩存,降低回源率。
前提條件
已開通Bot管理并開啟高級Bot防御(動態令牌挑戰),具體操作,請參見開通Bot管理、創建網頁防爬場景化防護規則。
方案概覽
本文以使用DCDN為例,配置自定義CacheKey只需2步:
配置自定義CacheKey:忽略URL中的被插入的隨機參數,從而提高緩存的命中率,降低回源率,減少請求的響應時間和帶寬消耗。
測試驗證:對配置進行全面測試,確保緩存策略、WAF令牌校驗和自定義CacheKey配置正確無誤并正常運行。
如果您使用的是阿里云CDN,則其配置方法相同。
架構圖
步驟一:配置自定義CacheKey
1. 獲取令牌參數名
在配置自定義 CacheKey 之前,您需要通過瀏覽器訪問目標網站觸發令牌校驗以獲取相關的參數名。
令牌校驗插入的參數名稱針對不同域名是隨機生成的,但某個域名下所有請求插入的令牌參數名是固定的,其格式為XXX__隨機數字,其中XXX可以是下面任意一個單詞。
timestamp、md5、type、ipcity、decode、encode、time、refer。
2. 配置自定義CacheKey
登錄DCDN控制臺,在左側導航欄,單擊域名管理后,單擊目標域名操作列的配置。
在指定域名的左側導航欄,單擊緩存設置,選擇自定義CacheKey頁簽,單擊配置。
說明支持對URI、請求參數、HTTP HEADER進行修改,同時支持自定義變量,從請求中提取需要的字段。最終的Cachekey將由URI、請求參數、HTTP HEADER、自定義變量四部分組合而成。
在自定義Cachekey對話框中,參數操作選擇刪除,并輸入獲取的令牌參數名。其他配置詳情,請參見自定義Cachekey參數說明。
步驟二:測試驗證
對配置進行全面測試,確保緩存策略、WAF令牌校驗和自定義CacheKey配置正確無誤并正常運行。
瀏覽器打開開發者工具訪問網站,單擊Network,查看Response Headers信息。如果存在X-Cache頭且值包含HIT關鍵字,則表明配置生效命中緩存數據。
X-Cache表示是否命中緩存,MISS表示不命中,HIT表示命中。