全部產品
Search
文件中心

CDN:配置CDN緩衝到期時間

更新時間:Dec 24, 2025

通過配置緩衝到期時間規則,可以精細化控制CDN節點的資源緩衝時間長度,以平衡內容更新、訪問效能與回源成本。此文檔介紹緩衝規則的工作原理、配置方法、驗證、排障流程及最佳實務。

工作原理

請求到達CDN節點時,系統遵循以下決策流程(序號越小,優先順序越高)決定是響應快取複本,還是回源擷取最新內容。

image
  1. 不緩衝資源:來源站點響應pragma:no-cachecache-control:no-cache(或者no-store,或者max-age=0)時,CDN遵循來源站點的策略,完全不緩衝資源。

  2. 遵循控制台緩衝規則:CDN控制台為指定目錄或檔案尾碼名設定規則,且來源站點未配置上述不緩衝規則,此時控制台緩衝規則為最高優先順序策略。

    • 多條控制台緩衝規則匹配時的優先順序邏輯:

      情境

      優先順序邏輯

      樣本

      權重不同

      權重值(1-99)大的規則優先生效。

      規則A(目錄/image/,權重50)和規則B(尾碼.jpg,權重90)都匹配 image/a.jpg,則規則B生效。

      權重相同

      先建立的規則優先生效。

      為網域名稱配置權重同為60的目錄規則(/static/)和尾碼規則(.js),若目錄規則建立時間早於尾碼規則,則 /static/app.js 命中目錄規則。

    • 請求命中某條緩衝規則後,不再繼續匹配其他規則。

    • 預設情況下,若來源站點響應 Pragma: no-cache 或 Cache-Control: no-cache/no-store/max-age=0CDN節點不緩衝該資源。如果需要強制緩衝資源,可以在控制台配置緩衝到期時間時勾選忽略來源站點不緩衝標題

  3. CDN遵循來源站點緩衝策略:若請求未命中任何CDN控制台規則,或命中的規則開啟了優選遵循來源站點緩衝策略,此時CDN將遵循來源站點的HTTP響應標題。回應標頭的優先順序由高至低為:cache-control>expires>last-modified>ETag

    回應標頭

    CDN 如何處理

    注意事項與樣本

    Cache-Control

    優先用 s-maxageCDN 緩衝時間長度),其次 max-age

    樣本:s-maxage=86400, max-age=3600 

    Expires

    到期時間,僅當無 Cache-Control 時生效。

    樣本:Expires: Wed, 21 Oct 2025 07:28:00 GMT

    Last-Modified

    Last-Modified是一個時間戳記,表示資源最後被修改的時間。

    緩衝時間計算規則如下:

    (目前時間-last-modified)* 0.1,計算結果在10秒~3600秒及之間的,取計算結果時間;小於10秒的,按照10秒處理;大於3600秒的,按照3600秒處理。

    樣本:Last-Modified: Wed, 21 Oct 2023 07:28:00 GMT

    ETag

    ETag是伺服器為每個資源產生的一個唯一識別碼,通常是一個雜湊值或版本號碼。

    ETag預設緩衝10秒。

    樣本:ETag: "abc123"

  4. CDN不緩衝策略:若沒有命中CDN控制台的緩衝規則,並且來源站點也沒有返回Cache-Control等緩衝回應標頭,則CDN執行不緩衝策略。

說明

CDN僅對來源站點響應200, 203, 206, 300, 301, 308, 410狀態代碼的請求執行緩衝策略。如需緩衝其他狀態代碼的請求(例如404),需在 緩衝配置 > 狀態代碼到期時間 版面設定。

操作步驟

控制台(推薦)

  1. CDN控制台的網域名稱管理頁,單擊目標網域名稱右側的管理

  2. 缓存配置 > 缓存过期时间頁面單擊添加,配置緩衝規則。

    添加緩衝到期時間

    參數

    說明

    image

    类型

    支援按目录文件后缀名指定資源範圍。
    • 目錄:為路徑下所有資源統一設定緩衝規則。
    • 檔案尾碼名:為指定類型的檔案統一設定緩衝規則。

    地址

    根據所選類型填寫:
    • 目錄:以 / 開頭(如 /static/),支援 / 匹配所有路徑,每次僅支援添加一條。
    • 檔案尾碼名:輸入一個或多個尾碼,用英文逗號分隔(如 jpg,css),區分大小寫,不支援 *

    过期时间

    資源在CDN節點的緩衝時間長度,最長3年。
    • 不常更新的靜態資源(如圖片、安裝包):建議 ≥1個月。
    • 頻繁更新的靜態資源(如 JS/CSS):按需設定。
    • 動態內容(如 PHP/JSP):建議設為 0秒(不緩衝)。


    優選遵循來源站點緩衝策略

    開啟後,優先採用來源站點緩衝策略,覆蓋本規則配置。

    忽略來源站點不緩衝標題

    開啟後,CDN 將忽略來源站點返回的以下不緩衝指令:
    Cache-Control: no-storeno-cachemax-age=0,以及 Pragma: no-cache,仍按CDN控制台規則緩衝。

    用戶端跟隨CDN緩衝策略

    開啟後,CDN 會將自身生效的緩衝策略(如 max-age=3600)通過回應標頭返回給用戶端。

    強制內容重新驗證

    僅在到期時間設為0秒時生效:

    • 關閉(預設):CDN的緩衝到期時間配置為0時,CDN節點上不快取檔案,每次請求都需要回源擷取內容。

    • 開啟:CDN的緩衝到期時間配置為0時,支援在CDN節點上快取檔案,每次請求都需要回源驗證緩衝內容。

    权重

    規則優先順序,取值 1~99,數值越大優先順序越高。
    • 權重相同時,先建立的規則優先生效。
    • 任一規則命中後,不再匹配後續規則。

    規則條件

    可基於請求中的參數(如 Header、URL 參數等)進一步限定規則生效範圍。
    • 預設不使用;如需配置,請在規則引擎中管理。

API

調用BatchSetCdnDomainConfig介面,大量設定網域名稱。

使規則變更立即生效

配置變更或新增規則,僅對新緩衝的資源生效。變更前已緩衝的資源,將繼續沿用舊的緩衝策略直至到期。

要使新規則立即對全網生效,必須手動清理已有緩衝。如果是規則變更,通過重新整理資源功能執行重新整理操作;如果是新增規則,通過預熱資源功能執行預熱操作。

生效驗證

配置完成後,可通過curl命令或瀏覽器開發人員工具查看資源的HTTP響應標題,以判斷緩衝是否按預期工作。

1. 執行驗證命令

在終端上執行以下命令進行測試。

curl -I "https://your.domain.com/path/to/file.jpg"

2. 解讀關鍵回應標頭

響應標題

常見值與解讀

X-Cache

指示請求是否命中CDN緩衝。
HIT:命中緩衝。
MISS:未命中緩衝,請求已回源擷取資源。

Cache-Control

開啟“用戶端跟隨CDN緩衝策略”後,此標題會顯示CDN傳遞給瀏覽器的緩衝指令,如 max-age=3600

X-Swift-CacheTime

資源在CDN節點上配置的緩衝總時間長度,單位為秒。

應用於生產環境

  • 版本化檔案名稱(推薦):更新靜態資源(如style.css)時,使用帶版本或雜湊值的新檔案名稱(如style-v2.cssstyle-a1b2c3d.css),並更新HTML中的引用。此方式無需手動重新整理CDN緩衝,可確保使用者立即擷取最新內容,是推薦的緩衝更新方式。

  • 動靜分離:為動態和靜態資源使用不同網域名稱或目錄路徑,並配置獨立的、高權重的緩衝規則,以避免策略混淆。例如,為/static/目錄下的所有資源設定長緩衝,為/api/目錄下的資源設定不緩衝。

  • 善用瀏覽器緩衝:開啟“用戶端跟隨CDN緩衝策略”,可減少對CDN的重複請求,提升載入速度並節省CDN流量。

  • 避免緩衝時間過短:過短的緩衝時間會導致CDN頻繁回源,無法起到加速效果,反而增加來源站點的流量消耗和成本。

  • 注意緩衝時間過長:過長的緩衝時間會導致用戶端擷取資料更新不及時。對於需頻繁更新的內容,務必配合重新整理快取作業或使用版本化檔案名稱。

HTTP協議緩衝控制機制說明

在HTTP協議中定義了三種不同類型的協議頭部來實現緩衝控制相關的機制:

  1. 到期時間校正機制

    用戶端在向服務端請求資源的過程中,雙方將為資源約定一個到期時間,在該到期時間之前,該資源(快取複本)就是有效,過了到期時間後,該資源(快取複本)就會失效。

    在HTTP協議中,控制緩衝到期時間的Header常見的有下面這些:

    頭部名稱

    協議版本

    作用

    樣本值

    類型

    Pragma

    HTTP/1.0

    Pragma用於表示內容是否為不緩衝,通常取值no-cache,表示檔案不緩衝,常被用來相容只支援HTTP1.0 協議的Server。

    Pragma:no-cache

    請求/響應

    Expires

    HTTP/1.0

    Expires回應標頭包含日期/時間,表示在此時間之後,緩衝內容將會到期。

    如果使用了無效的日期,比如0,則代表該資源已經到期。

    Expires: Wed, 21 Oct 2022 07:28:00 GMT

    響應

    Cache-Control

    HTTP/1.1

    Cache-Control回應標頭可以設定不同的指令來實現靈活的緩衝控制,是目前主流用戶端(如瀏覽器等)用於控制緩衝的重要頭部。

    以下三個樣本表示檔案不緩衝:

    • Cache-Control:no-cache

    • Cache-Control:no-store

    • Cache-Control:max-age=0

    表示緩衝有效期間1小時的樣本:Cache-Control:max-age=3600

    請求/響應

  2. 資源標籤驗證機制

    用戶端在首次向服務端請求資源的過程中,服務端將在回應標頭中帶上資源標籤,資源標籤可以作為用戶端再次請求同一資源時的校正標識。用戶端再次請求同一資源時,要求標頭中將會攜帶資源標籤,若服務端校正後認為該資源沒有更新,則響應HTTP狀態代碼304,告訴用戶端該資源沒有更新,用戶端可以繼續使用本機快取;若服務端校正後發現資源標籤不匹配,則告訴用戶端該資源已經被修改或者已經到期,用戶端需要重新擷取資源內容。

    在HTTP協議中,控制緩衝版本的Header常見的有下面這些:

    頭部名稱

    協議版本

    作用

    樣本值

    類型

    Last-Modified

    HTTP/1.0

    Last-Modified表示資源的最後修改時間。

    Last-Modified: Wed, 21 Oct 2015 07:28:00 GMT

    響應

    ETag

    HTTP/1.1

    ETag表示當前資源特定版本的唯一識別碼。

    對比ETag能判斷資源是否變化,如果沒有改變,來源站點伺服器不需要發送完整的響應。

    ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

    響應

  3. 多副本協商機制

    緩衝軟體使用關鍵字索引在磁碟中緩衝的對象,在HTTP/1.0中使用資源的URL作為關鍵字,但可能存在不同的資源基於同一個URL的情況,要區別它們還需要用戶端提供更多的資訊,例如:Accept-Language、Accept-Charset等頭部,為了支援這種內容協商機制(content negotiation mechanism),HTTP/1.1在響應訊息中引入了Vary頭部,該頭部列出了請求訊息中需要包含哪些頭部用於內容協商。

    多副本協商機制通常使用HTTP協議的Vary頭部來區分不同的快取複本,實現不同的用戶端請求同一個資源的時候可以拿到不同快取複本:

    頭部名稱

    協議版本

    說明

    樣本值

    類型

    Vary

    HTTP/1.1

    常用樣本:

    • 服務端指定Vary: Accept-Encoding,告知接收端(例如:CDN節點)對於該資源需緩衝兩個版本(壓縮和未壓縮)。用戶端向CDN請求同一個資源時,老版本瀏覽器擷取未壓縮資源(避免相容性問題),新版本瀏覽器擷取壓縮資源(減少資料轉送流量)。

    • 服務端指定Vary: User-Agent,用來識別發送請求的瀏覽器類型,告知接收端(例如:CDN節點),根據不同的瀏覽器類型緩衝對應版本的資源。

    Vary: Accept-Encoding

    Vary: Accept-Encoding,User-Agent

    響應

常見問題