開啟忽略參數後,CDN 節點會去除請求 URL 參數(? 之後的部分),使不同參數的請求命中同一緩衝,從而提高快取命中率。本文介紹忽略參數的配置方法、功能對比以及常見問題排查。
功能對比與選擇
自訂Cache Key與忽略參數存在衝突:開啟忽略參數後,節點會去除URL中
?之後的參數,導致自訂Cache Key中的請求參數配置失效。使用自訂Cache Key前,請關閉忽略參數。自訂Cache Key可替代忽略參數的緩衝鍵配置,且功能更全面,推薦優先使用。配置對比:
情境
忽略參數配置
自訂Cache Key配置
在緩衝鍵中忽略所有請求參數
忽略參數設定為是,保留指定參數留空
添加一條請求參數處理策略:
操作方式:保留
參數名:設為任意不存在的參數名,例如 example-argument
在緩衝鍵中僅保留請求參數key1
忽略參數設定為是,保留指定參數設定為
key1添加一條請求參數處理策略:
操作方式:保留
參數名:key1
在緩衝鍵中僅刪除請求參數key1
刪除指定參數設定為
key1添加一條請求參數處理策略:
操作方式:刪除
參數名:key1
重寫回源參數可替代忽略參數的回源參數重寫,且功能更全面,推薦優先使用。
功能介紹
忽略參數
作用 | 適用情境 |
去除請求 URL 參數( | 當 URL 參數與資源內容無關(如使用者 UID、渠道來源、推薦碼等),建議開啟忽略參數。例如,以下兩個請求訪問同一資源但攜帶不同 UID: A 使用者: B 使用者: 未開啟忽略參數時,CDN 節點會將 A、B 使用者的 URL 視為不同資源,無法命中同一緩衝,每次都需回源。開啟忽略參數後,CDN 節點會去除 URL 參數,統一使用 |
配置URL鑒權的優先順序高於忽略參數。鑒權方式A的鑒權資訊包含URL參數部分,CDN會先完成鑒權判斷,通過後再快取複本。
保留回源參數
作用 | 適用情境 |
回源時保留原始 URL 全部參數,確保來源站點能接收到使用者的關鍵資訊。 | 開啟忽略參數後,CDN 節點預設使用去除參數後的 URL 回源。以上述樣本為例,A、B 使用者的回源請求都使用 |
操作步驟
登入CDN控制台。
在左側導覽列,單擊域名管理。
在網域名稱列表單擊目標網域名稱,在左側導覽列,單擊性能优化,進入效能最佳化配置頁面。
單擊忽略參數地區的修改配置,根據實際需求選擇模式並完成配置。
配置完成後,單擊確定儲存。
模式:保留指定參數
參數 | 說明 | 樣本 |
忽略参数 |
| 假設原始URL為
|
保留指定參數 | 配置需要保留的參數名,最多10個,多個參數用英文逗號(,)分隔。 | |
保留回源参数 |
| |
規則條件 | 規則條件能夠對使用者請求中攜帶的各種參數資訊進行識別,以此來決定某個配置是否對該請求生效。 重要
引用規則條件時,按所關聯規則條件的優先順序匹配,而非按功能自身的配置順序匹配。
|
模式:刪除指定參數
參數 | 說明 | 樣本 |
刪除指定參數 | 配置需要刪除的參數名,最多10個,多個參數用空格分隔。 | 假設原始URL為
|
保留回源参数 |
| |
規則條件 | 規則條件能夠對使用者請求中攜帶的各種參數資訊進行識別,以此來決定某個配置是否對該請求生效。 重要
引用規則條件時,按所關聯規則條件的優先順序匹配,而非按功能自身的配置順序匹配。
|
常見問題
開啟忽略參數後出現業務異常,如何排查?
開啟忽略參數後,CDN 會將帶不同參數的請求視為同一資源進行緩衝。如果 URL 參數涉及以下類型,不應全域忽略:
使用者身份標識(如 UID、Token、Session ID):忽略後會導致鑒權失敗或不同使用者資料串號。
動態內容區分(如版本號碼
?v=1、分頁頁碼?page=2):忽略後會導致返回錯誤的緩衝內容。來源站點處理指示(如 OSS 圖片處理參數
x-oss-process):忽略後會導致處理參數失效,返回未處理的原始資源。
排查與解決方案:
刪除或關閉忽略參數的配置。
配置修改後,執行緩衝重新整理操作(URL 重新整理或目錄重新整理),清除邊緣節點的舊緩衝。
如果部分參數需要保留,可使用保留指定參數模式,將關鍵參數(如
x-oss-process、token等)設定為保留。
修改忽略參數配置後,為什麼功能未生效?
修改忽略參數配置後,邊緣節點上已緩衝的檔案不會自動更新。如果配置後仍出現訪問異常或回源流量未降低,請按以下步驟排查:
確認配置已儲存:登入 CDN 控制台,重新進入忽略參數配置頁面,確認當前配置狀態與預期一致。
檢查是否與自訂 Cache Key 衝突:忽略參數與自訂 Cache Key 功能不可共存。開啟忽略參數後,自訂 Cache Key 的請求參數配置將失效。請確認兩者未同時啟用。
執行緩衝重新整理:配置修改後立即生效,但已緩衝的舊檔案仍使用舊策略。必須在重新整理和預熱資源頁面執行 URL 重新整理或目錄重新整理,清除舊緩衝後新配置才能完全生效。
驗證配置生效:使用
curl -I "完整URL"命令檢查回應標頭X-Cache欄位,確認快取命中狀態是否符合預期。
使用 OSS 圖片處理或視頻截幀時,如何配置忽略參數?
當使用 OSS 圖片處理(如 x-oss-process=image/resize,w_200)或視頻截幀功能時,如果 CDN 網域名稱開啟了忽略參數,原圖/原視頻連結與帶處理參數的連結會被緩衝為同一份資源,導致訪問內容錯誤。
解決方案:在 CDN 控制台忽略參數配置,將 x-oss-process 參數設定為保留指定參數模式,使帶有圖片處理參數的 URL 能夠單獨緩衝,避免與原圖/原視頻緩衝衝突。
如何利用忽略參數應對通過 URL 參數繞過緩衝的請求?
當攻擊者或爬蟲通過添加隨機無意義參數(如 ?timestamp=xxx、?random=xxx)請求同一資源時,CDN 會將每個帶不同參數的請求視為獨立資源,導致快取命中率降低和回源流量激增。
此時應開啟忽略參數功能(或配置忽略所有參數),使攜帶不同隨機參數的請求命中同一緩衝,從而有效降低回源壓力。例如,配置忽略參數後,以下請求將命中同一緩衝:
http://example.com/page.html?t=123456http://example.com/page.html?t=789012http://example.com/page.html?random=abc
上述請求在開啟忽略參數後,統一使用 http://example.com/page.html 匹配緩衝,有效防禦通過 URL 參數繞過緩衝的攻擊行為。
為什麼開啟了忽略參數,但不同用戶端的快取命中狀態不一致(X-Cache 顯示 MISS)?
可能原因:
URL 攜帶未忽略的動態鑒權參數:如 URL 帶有
auth_key等鑒權參數,每次請求的鑒權值不同,即使開啟了忽略參數但未將其保留,CDN 仍會識別為不同資源。首次訪問節點無緩衝:資源尚未緩衝到特定邊緣節點,首次訪問必然顯示 MISS。
用戶端要求標頭差異:如
Accept-Encoding、User-Agent不同可能觸發多副本緩衝(如 Gzip 版本和非 Gzip 版本分別緩衝)。與自訂Cache Key衝突,配置未生效。
排查方法:在用戶端執行 curl -I "完整URL",對比回應標頭 X-Cache 和 X-Swift-CacheTime 確認緩衝狀態。
解決方案:確認忽略參數配置正確(已開啟且關鍵參數已設定為保留),並確保用戶端要求標頭策略一致。
灰階發布或版本更新時,如何通過 URL 參數控制 CDN 擷取最新資源?
若開啟了忽略參數,CDN 將無法通過 URL 參數(如 ?v=1、?v=2)區分不同版本。建議採用以下方案:
方案一(推薦):採用檔案版本化命名(如
style.v2.css、app.v2.js)而非僅依賴查詢參數,以確保使用者擷取最新內容。方案二:在發布新版本時,主動調用 CDN重新整理介面清除舊緩衝。