全部產品
Search
文件中心

CDN:效能最佳化排障指南

更新時間:Sep 17, 2026

本文按癥狀匯總 CDN 效能最佳化情境的排障方法:訪問速度慢、Gzip 壓縮與頁面最佳化不生效、忽略參數配置異常等。

癥狀速查

對照下錶快速定位排查方向:

癥狀表現

關鍵判據

排查章節

某地區或某電訊廠商使用者集中訪問慢

ping 加速網域名稱延遲大或丟包;使用者被調度到距離遠的節點

用戶端到節點網路品質差或調度異常

訪問慢且來源站點壓力大、回源流量高

X-Cache為 MISS、X-Swift-CacheTime為 0

快取命中率低或頻繁回源導致訪問慢

API 等動態介面訪問慢,靜態資源正常

動態請求每次回源,X-Cache持續為 MISS

動態請求訪問慢

回源擷取內容慢、回源失敗率高

來源站點與主要使用者群位於不同國家或地區

跨國或跨境回源慢

首頁載入慢,首頁返回後靜態資源很快載入

首頁請求在 Network 中長時間 Pending,Waiting (TTFB) 耗時高

網站首頁載入慢

頁面資源總體積大、下載耗時間長度

Timing 中 Content Download 耗時佔比最大

大資源載入慢

直連來源站點返回壓縮內容,經 CDN 訪問後未壓縮(Gzip 或 Brotli)

要求標頭帶Accept-Encoding,回應標頭無Content-Encoding、僅返回Content-Length

回源後 Gzip 壓縮不生效

已開啟頁面最佳化,瀏覽器訪問返回的 HTML 未被最佳化

curl 不帶Accept-Encoding時已最佳化,帶該要求標頭時未最佳化

同時開啟頁面最佳化和 Gzip 壓縮,頁面最佳化不生效

開啟忽略參數後鑒權失敗、使用者資料串號或返回錯誤內容

帶不同參數的 URL 返回同一份緩衝內容

開啟忽略參數後出現業務異常

修改忽略參數配置後仍訪問異常或回源流量未降低

節點舊緩衝未重新整理,或同時啟用了自訂 Cache Key

修改忽略參數配置後未生效

OSS 圖片處理或視頻截幀返回未處理的原始資源

帶x-oss-process與不帶該參數的 URL 返回相同內容

OSS 圖片處理或視頻截幀內容錯誤

已開啟忽略參數,但不同用戶端快取命中狀態不一致

部分請求X-Cache為 MISS,URL 含保留的動態鑒權參數或用戶端要求標頭存在差異

開啟忽略參數後快取命中狀態不一致

說明:如果尚無法確定癥狀屬於上表哪一類,請根據排障前的準備步驟確認問題範圍和快取命中狀態;快取命中率最佳化等相鄰問題的排查入口請參見相關文檔。

排障前的準備

效能問題的影響因素較多,排查前先確認請求確實經過 CDN,並建立對照組以縮小根因範圍。

確認請求確實經過 CDN

建議收集以下基礎資訊:

  • 完整 URL、複現時間和時區;

  • 使用者國家或地區、電訊廠商和用戶端公網 IP;

  • LocalDNS 或其他解析器;

  • CNAME 鏈、最終 A/AAAA 記錄和實際串連 IP;

  • 加速網域名稱、來源站點類型、加速地區和 ICP 備案情況;

  • 最近 24 小時的 DNS、認證、緩衝、回源、壓縮和內容發布變更。

說明

僅用 ping 不能證明 HTTPS 請求已正確經過 CDN。ping 測量 ICMP,節點也可能限制 ICMP。應同時核驗 DNS、TCP、TLS 和 HTTP。

建立對照組

為便於定位根因,建議建立以下對照:

  • 正常地區與異常地區;

  • 正常電訊廠商與異常電訊廠商;

  • IPv4 與 IPv6(如網域名稱已啟用);

  • 訪問 CDN 節點的效果對比訪問來源站點的效果;

  • 不同查詢參數、不同 Accept-Encoding 的單變數請求;

  • 同一 URL 的連續 GET 請求。

說明

不要只用一個 HEAD 請求斷定 GET 的緩衝和本文行為,因為某些來源站點或代理對 HEAD 與 GET 的處理不同。

訪問效果採集

一次可複核的排障至少記錄以下資訊:

  • UTC 時間、用戶端地區與電訊廠商、脫敏後的用戶端 IP <CLIENT_IP>、LocalDNS;

  • 請求 URL、要求方法、狀態代碼、重新導向鏈;

  • DNS 結果、實際串連節點 IP;

  • X-Cache、X-Swift-CacheTime、Age(如有)、Via;

  • Cache-Control、Pragma、Expires、ETag、Last-Modified、Vary;

  • Content-Type、Content-Length、Content-Encoding、Accept-Ranges、Content-Range;

  • DNS、TCP、TLS、TTFB、下載和總時間長度;

  • 同一請求的 CDN 首次 GET、重複 GET、指定節點 GET、直連來源站點 GET 對照結果。

命令列訪問

訪問耗時分解:優先使用 GET;HEAD 只作輔助,因為 HEAD 的來源站點處理、WAF 規則或緩衝路徑可能與 GET 不同。

curl -sS -D /tmp/cdn-headers.txt -o /dev/null \
  -w 'remote_ip=%{remote_ip}\nhttp_code=%{http_code}\ntime_namelookup=%{time_namelookup}\ntime_connect=%{time_connect}\ntime_appconnect=%{time_appconnect}\ntime_starttransfer=%{time_starttransfer}\ntime_total=%{time_total}\nsize_download=%{size_download}\n' \
  "https://<CDN_DOMAIN>/<RESOURCE_PATH>"

耗時分解:

  • DNS:time_namelookup;

  • TCP:time_connect - time_namelookup;

  • TLS:time_appconnect - time_connect;

  • 請求發送、CDN 節點處理、回源和來源站點:主要反映在 time_starttransfer - time_appconnect;

  • 下載:time_total - time_starttransfer。

TTFB 高只能說明等待首位元組時間長,無法直接證明來源站點慢。還需結合緩衝狀態、連續請求、CDN 監控和來源站點日誌。

不同指標項對應的問題:

  • DNS 高:檢查解析器、CNAME、A/AAAA、TTL 和地區差異。

  • TCP 高:檢查路由、丟包、節點距離和電訊廠商鏈路。

  • TLS 高:檢查 SNI、憑證鏈結、TLS 版本和協議協商。

  • TTFB 高:檢查緩衝狀態、CDN 處理、回源鏈路和來源站點應用。

  • 下載高:檢查資源體積、吞吐、壓縮、圖片或視頻編碼。

  • 網路階段正常但頁面仍慢:檢查瀏覽器 Queueing、渲染阻塞、LCP、INP、第三方資源和主線程任務。

綁定某個 CDN 節點進行對照:

curl -sS -D - -o /dev/null \
  --resolve "<CDN_DOMAIN>:443:<CDN_NODE_IP>" \
  "https://<CDN_DOMAIN>/<RESOURCE_PATH>"

直連來源站點進行對照驗證訪問效果:

curl -sS -D - -o /dev/null \
  --resolve "<CDN_DOMAIN>:443:<ORIGIN_IP>" \
  "https://<CDN_DOMAIN>/<RESOURCE_PATH>"

驗證壓縮協商:

curl -sS -D - -o /dev/null \
  -H 'Accept-Encoding: gzip, br' \
  "https://<CDN_DOMAIN>/<RESOURCE_PATH>"

驗證 Range:

curl -sS -D - -o /dev/null \
  -H 'Range: bytes=0-1023' \
  "https://<CDN_DOMAIN>/<LARGE_RESOURCE_PATH>"

重複執行同一個 GET,比較請求級緩衝狀態與耗時:

curl -sS -D - -o /dev/null "https://<CDN_DOMAIN>/<RESOURCE_PATH>"
curl -sS -D - -o /dev/null "https://<CDN_DOMAIN>/<RESOURCE_PATH>"

瀏覽器訪問

  1. 在瀏覽器 Network 中禁用本機快取後複現。

  2. 按 Time 排序,確認慢 URL 是否真正經過 CDN。

  3. 查看 Timing 的 Queueing、Stalled、DNS、Initial connection、SSL、Waiting (TTFB)、Content Download。

  4. 記錄頁面主文件與其依賴資源的瀑布關係。

  5. 通過 DNS 查詢確認解析結果,通過 MTR/traceroute 觀察路徑。

  6. 多地區撥測應使用同一URL 與時間視窗。

訪問速度慢

用戶端到節點網路品質差或調度異常

癥狀:ping 加速網域名稱延遲大或丟包;某地區、某電訊廠商使用者集中訪問慢;使用者被調度到距離遠的節點。

可能原因與排查:

  • 加速地區設定錯誤:加速地區選取項目"僅中國內地"時,海外使用者會被調度到中國內地節點;選擇"全球(不包含中國內地)"時,中國內地使用者會被調度到海外節點。請根據使用者分布將加速地區設定為正確的範圍(如"全球")。

  • 網域名稱未完成 ICP 備案:未備案網域名稱只能選擇"全球(不包含中國內地)",中國內地使用者通過境外節點訪問時鏈路較長,速度可能不理想。需要為中國內地使用者提供加速時,請先完成 ICP 備案;無法備案時可評估使用邊緣安全加速 ESA海外跨地區安全加速降低中國內地使用者訪問海外網站的延遲。

  • 用戶端 DNS 設定錯誤:例如東京使用者使用美國的 DNS,會被調度到美國節點而非就近的節點。請指導使用者修改為所在地對應電訊廠商的 DNS。

  • 地區電訊廠商網路波動:加速地區和 DNS 均正確但仍慢時,收集 traceroute 和 MTR 資訊確認延遲發生的具體鏈路段;可根據使用者請求到的節點 IP 綁定該節點測試,確認節點本身響應是否正常,再結合快取命中狀態和資源體積進一步分析。

快取命中率低或頻繁回源導致訪問慢

癥狀:回應標頭 X-Cache 為 MISS、X-Swift-CacheTime 為 0;來源站點壓力大、回源流量高;首次訪問比直接存取來源站點還慢。

常見原因與最佳化方案:

  • 首次訪問無緩衝:節點首次響應需先回源取資料。推薦使用預熱 URL 功能,將來源站點內容主動預熱到 CDN 節點,請參見重新整理和預熱資源。

  • 流量低、檔案熱度不夠:節點緩衝按熱度末尾淘汰,訪問量低的資源會被提前清除。低流量情境可適當延長緩衝時間或使用預熱功能保持熱度。

  • 緩衝配置不合理:

    • 未配置緩衝規則且靜態檔案未返回 ETag 和 Last-Modified 回應標頭時,該檔案無法緩衝。請在來源站點補充這兩個回應標頭,或在 CDN 側配置緩衝規則,請參見配置CDN緩衝到期時間。

    • 未配置緩衝規則時使用預設緩衝策略,緩衝時間最長不超過 3600 秒,容易頻繁到期回源。請根據業務設定合理的緩衝時間。

    • 來源站點回應標頭含 s-maxage=0、max-age=0、no-cache、no-store、private、Pragma: no-cache 中任一項時,即使配置了緩衝規則也不會緩衝。請在來源站點將回應標頭修改為可快取的值(如 public),或在CDN緩衝規則中開啟忽略來源站點不緩存標題。

  • URL 攜帶可變參數:不同參數的 URL 訪問同一檔案時,CDN 視為不同資源分別回源。請開啟忽略參數功能,請參見忽略參數。

  • 大檔案回源慢:大檔案情境建議開啟 Range 回源最佳化回源效率,請參見配置Range回源。

  • 頻繁重新整理緩衝:頻繁重新整理 URL 或目錄緩衝會使節點緩衝持續失效,命中率下降。請僅在內容更新時重新整理受影響的資源。

驗證方法:將使用者網域名稱綁定 hosts 到來源站點 IP 直接存取,與通過 CDN 訪問的載入時間對比,可驗證加速效果並確認瓶頸在回源還是分發鏈路。更多命中率最佳化策略請參見緩衝排障指南。

動態請求訪問慢

癥狀:API 介面等動態內容訪問慢;靜態資源快但頁面整體載入慢。

原因:CDN 無法緩衝即時變化的動態內容,動態請求每次都會轉寄回來源站點伺服器,CDN 緩衝加速對其無加速效果。如果來源站點本身響應慢,動態請求會同步變慢。

解決方案:

  • 來源站點做動靜分離:靜態資源使用 CDN 加速網域名稱,動態請求使用直接解析到來源站點的網域名稱訪問。

  • 使用邊緣安全加速 ESA加速動態請求,通過路由最佳化、傳輸最佳化等技術縮短回源鏈路。注意動態加速屬於鏈路最佳化,如果來源站點伺服器本身響應慢,仍需最佳化來源站點。

跨國或跨境回源慢

癥狀:來源站點與主要使用者群位於不同國家或地區時,回源品質波動,回源擷取內容慢、回源失敗率高,影響緩衝和內容分發。

原因:跨境回源受不同國家間海底光纜容量和公網擁塞影響。

解決方案:使用Global Acceleration GA 對來源站點做對應國家的定向加速,並配置 CDN 分地區回源策略,提升未命中緩衝時的回源品質。GA 支援 ECS、ALB、OSS 等來源站點類型,並提供GA聯動CDN實現回源加速。

網站首頁載入慢

癥狀:首頁請求在 Network 中 Pending 狀態期間長;首頁返回後靜態資源很快載入出來。

原因:首頁通常是動態資源或被設定為不緩衝的資源,每次訪問都會回源。來源站點響應慢時,首頁請求被阻塞,後續依賴首頁 HTML 引用的圖片、JS、CSS 等資源無法開始載入。

解決方案:先通過緩衝相關回應標頭確認首頁是否命中緩衝;未命中時按快取命中率低或頻繁回源導致訪問慢排查緩衝配置;來源站點響應慢時最佳化來源站點效能或採用動靜分離。

大資源載入慢

癥狀:Timing 中 Content Download 耗時佔比大;頁面資源總體積大。

解決方案:開啟效能最佳化功能(智能壓縮、頁面最佳化等)縮小檔案體積,提升載入速度,請參見效能最佳化概述。智能壓縮支援的格式包括:text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、text/javascript、image/tiff、image/svg+xml、application/json、application/xml。

壓縮與頁面最佳化不生效

回源後 Gzip 壓縮不生效

癥狀:來源站點(如 Nginx)開啟了 Gzip 壓縮,用戶端直接存取來源站點時回應標頭返回 Content-Encoding: gzip;通過 CDN 訪問且要求標頭帶 Accept-Encoding: gzip, deflate 時,回應標頭只返回 Content-Length,內容未被壓縮。

原因:CDN 回源請求中會攜帶 Via 要求標頭標識請求來自Proxy 伺服器。Nginx 的 ngx_http_gzip_module 模組通過 gzip_proxied 配置控制代理請求是否啟用壓縮,該配置預設值為 off,導致來自 CDN 的回源請求不返回壓縮內容。

解決方案:

  1. 在 Nginx 設定檔(http、server 或 location 段,以實際配置為準)中設定 gzip_proxied any,使所有來自Proxy 伺服器的請求都啟用壓縮。

  2. 執行 nginx -t 確認配置無誤後執行 nginx -s reload 重新載入配置。

  3. 通過 CDN 訪問並確認回應標頭含有 Content-Encoding: gzip。

驗證方法:使用 curl 直連來源站點對比測試——不帶 Via 頭時返回 Content-Encoding: gzip,增加 -H 'Via:xxx' 類比代理請求後只返回 Content-Length,即可確認是 gzip_proxied 配置導致。

說明:Brotli 壓縮不生效時排查思路相同——確認來源站點是否因 Via 要求標頭或 gzip_proxied 類配置拒絕對代理請求返回壓縮內容,將 Gzip 相關配置替換為 Brotli 對應配置即可。

與頁面最佳化的取捨:如果您同時開啟了頁面最佳化功能,請注意來源站點壓縮與頁面最佳化互斥,來源站點返回壓縮內容後 CDN 無法執行頁面最佳化。需要在來源站點壓縮(節省回源頻寬)和頁面最佳化(精簡 HTML 體積)之間根據業務優先順序選擇其一。

同時開啟頁面最佳化和 Gzip 壓縮,頁面最佳化不生效

癥狀:已開啟頁面最佳化功能,curl 不帶 Accept-Encoding 要求標頭時返回的 HTML 已最佳化;但瀏覽器訪問(要求標頭預設帶 Accept-Encoding: gzip)時返回內容未經頁面最佳化。

原因:

  • 來源站點返回了 Gzip 壓縮內容:瀏覽器預設攜帶 Accept-Encoding: gzip 要求標頭,CDN 回源時轉寄該要求標頭,來源站點開啟 Gzip 後返回壓縮內容。CDN 節點不會對來源站點已壓縮的內容進行解壓後再執行頁面最佳化,因此來源站點返回壓縮內容時頁面最佳化無法生效。

  • CDN 側智能壓縮不阻塞頁面最佳化:CDN 自身的智能壓縮在頁面最佳化之後執行,兩者不衝突。本癥狀僅在來源站點已返回壓縮內容時出現——來源站點預壓縮使 CDN 無法對內容做頁面最佳化,與 CDN 側智能壓縮無關。

解決方案:

  • 方案一:確保來源站點對 CDN 回源請求不返回 Gzip 壓縮內容。Nginx 來源站點可修改 gzip_proxied 參數,使來自Proxy 伺服器的請求不返回壓縮內容。

  • 方案二:在 CDN 配置刪除回源 HTTP 要求頭中的 Accept-Encoding,使來源站點返回未壓縮內容,由 CDN 完成頁面最佳化。

說明:來源站點不返回壓縮內容後,CDN 可通過智能壓縮功能對用戶端響應進行壓縮,兼顧頁面最佳化與傳輸壓縮效果。

忽略參數異常

開啟忽略參數後出現業務異常

癥狀:開啟忽略參數後出現鑒權失敗、使用者資料串號、返回錯誤的緩衝內容或圖片處理失效。

原因:開啟忽略參數後,CDN 將帶不同參數的請求視為同一資源緩衝。以下類型的 URL 參數不應被全域忽略:

  • 使用者身份標識(如 UID、Token、Session ID):忽略後會導致鑒權失敗或不同使用者資料串號。

  • 動態內容區分(如版本號碼 ?v=1、分頁頁碼 ?page=2):忽略後會返回錯誤的緩衝內容。

  • 來源站點處理指示(如 OSS 圖片處理參數 x-oss-process):忽略後處理參數失效,返回未處理的原始資源。

排查與解決方案:

  1. 刪除或關閉忽略參數配置。

  2. 執行緩衝重新整理(URL 重新整理或目錄重新整理),清除邊緣節點的舊緩衝。

  3. 如需保留部分參數,使用保留指定參數模式,將關鍵參數(如 x-oss-process、token)設定為保留。忽略參數功能詳情請參見忽略參數。

修改忽略參數配置後未生效

癥狀:修改忽略參數配置後,仍出現訪問異常或回源流量未降低。

原因:配置修改後,邊緣節點上已緩衝的檔案不會自動更新,舊緩衝仍按舊策略響應。

排查步驟:

  1. 確認配置已儲存:登入 CDN 控制台,重新進入忽略參數配置頁面,確認當前配置狀態與預期一致。

  2. 檢查是否與自訂 Cache Key 衝突:自訂 Cache Key 會覆蓋忽略參數配置。若已啟用自訂 Cache Key,忽略參數配置將不生效。請確認兩者未同時啟用。

  3. 執行緩衝重新整理:在重新整理和預熱資源頁面執行 URL 重新整理或目錄重新整理,清除舊緩衝後新配置才能完全生效。

  4. 驗證配置生效:執行 curl -I "完整URL" 檢查回應標頭 X-Cache,確認快取命中狀態符合預期。

OSS 圖片處理或視頻截幀內容錯誤

癥狀:使用 OSS 圖片處理(如 x-oss-process=image/resize,w_200)或視頻截幀時,訪問返回未經處理的原始圖片或視頻,或不同處理參數的請求返回相同內容。

原因:CDN 網域名稱開啟忽略參數後,原圖連結與帶處理參數的連結被緩衝為同一份資源,導致訪問內容錯誤。

解決方案:在 CDN 控制台忽略參數配置中,將 x-oss-process 參數設定為保留指定參數模式,使帶圖片處理參數的 URL 單獨緩衝,避免與原圖緩衝衝突。配置修改後需重新整理緩衝(參見修改忽略參數配置後未生效)。

開啟忽略參數後快取命中狀態不一致

癥狀:已開啟忽略參數,但不同用戶端的快取命中狀態不一致,部分請求 X-Cache 顯示 MISS。

可能原因:

  1. URL 攜帶未忽略的動態鑒權參數:如 URL 帶有 auth_key 等鑒權參數且被設定為保留,每次請求的鑒權值不同,CDN 仍識別為不同資源。

  2. 首次訪問節點無緩衝:資源尚未緩衝到該邊緣節點,首次訪問必然顯示 MISS。

  3. 用戶端要求標頭差異:如 Accept-Encoding 不同可能觸發多副本緩衝(如 Gzip 版本和非 Gzip 版本分別緩衝),如果來源站點返回了 Vary: User-Agent,不同 UA 的請求也會分別緩衝。

  4. 與自訂 Cache Key 衝突:自訂 Cache Key 會覆蓋忽略參數配置,兩者同時啟用時忽略參數不生效。

排查方法:在用戶端執行 curl -I "完整URL",對比回應標頭 X-Cache 和 X-Swift-CacheTime 確認緩衝狀態。解決方案:確認忽略參數配置正確(已開啟且關鍵參數已設定為保留),確保用戶端要求標頭策略一致,並確認未與自訂 Cache Key 同時啟用。