本文按癥狀匯總 CDN 緩衝情境的排障方法:緩衝不生效與未命中、快取命中率低與回源率高、回應標頭與跨域異常、視頻與大檔案異常、內容不更新與訪問異常。
通用排查前置步驟
本文適用於阿里雲 CDN,且加速網域名稱已完成接入、CNAME 解析已生效。若使用全站加速(DCDN),部分配置入口和功能名稱可能不同,請以控制台實際顯示為準。
以下確認項在多數緩衝問題中都會用到,建議開始排查前先逐項完成,避免因環境幹擾得出錯誤結論:
確認項 | 說明 |
確認 CNAME 解析正確 | 執行 |
確認配置已全網生效 | 控制台中規則狀態需為成功,配置下發到全網節點通常需要 3~5 分鐘。 |
排除瀏覽器本機快取 | 使用無痕模式或 |
清除 CDN 存量緩衝 | 新配置只對配置生效後的新請求生效,已按舊策略緩衝的資源需通過重新整理預熱提交 URL 重新整理或目錄重新整理。 |
本文多處將「緩衝到期時間設為 0 秒」作為兜底手段。到期時間為 0 意味著每次請求都回源,會顯著增加來源站點負載並降低加速效果,僅建議對確實需要即時性的動態內容(如 API 介面)使用,不要對靜態資源全域配置。
如何判斷緩衝是否命中
排查緩衝問題前,先通過回應標頭確認資源的緩衝狀態:
用 GET 請求查看回應標頭:執行
curl -v -o /dev/null "http(s)://加速網域名稱/資源路徑"。curl -I(HEAD 請求)在部分情境可能不觸發節點對資源體的真實緩衝邏輯,導致誤判為未命中,建議優先使用 GET 請求驗證。看 X-Cache 判斷命中狀態:
HIT表示命中緩衝;MISS或該欄位不存在表示未命中,本次請求已回源。看 Age 與 X-Swift-CacheTime 判斷剩餘緩衝時間:
Age是資源已在節點緩衝的秒數,需與 X-Cache 一起判斷——X-Cache 為 MISS 且 Age 為 0 表示本次請求已回源;X-Cache 為 HIT 但 Age 為 0,表示資源剛被緩衝不到 1 秒。X-Swift-CacheTime是允許緩衝的總時間長度,剩餘時間 = X-Swift-CacheTime − Age。確認請求是否經過 CDN:若回應標頭
Server為來源站點標識(如AliyunOSS、nginx)且沒有 X-Cache、X-Swift-CacheTime 等 CDN 回應標頭,說明請求未經過 CDN 節點而是直連了來源站點。請用dig 加速網域名稱或nslookup 加速網域名稱確認最終解析結果,只保留 CDN 分配的 CNAME 記錄,刪除指向來源站點 IP 的 A/AAAA 記錄或指向來源站點網域名稱的 CNAME 記錄。
緩衝不生效與未命中類
快取命中率低與回源率高類
回應標頭與跨域異常類
視頻與大檔案異常類
內容與訪問異常類
仍未解決怎麼辦
提交工單前,建議先通過以下方式自助定位:
查看即時日誌:在控制台查看具體請求的緩衝狀態、回源情況和響應碼分布,確認問題集中在哪些 URL 或時段。
使用控制台診斷工具:輸入出現問題的 URL 進行檢測,快速擷取解析、回源和回應標頭資訊。
做對比測試:分別通過 CDN 和直連來源站點訪問同一資源,對比回應標頭和內容差異,判斷問題在 CDN 側還是來源站點側。
若自助排查後問題仍未解決,建議收集以下資訊後提交工單,以加快定位:
加速網域名稱和具體的請求 URL。
複現問題的
curl -v完整輸出(含要求標頭和回應標頭)。問題發生的大致時間、地區和電訊廠商。
來源站點類型(OSS、ECS、SLB、第三方來源站點等)及來源站點是否支援 Range 請求。
已嘗試的排查步驟及各步結果。
若問題涉及快取命中率,提供控制台命中率截圖及對應的時間範圍。