本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

配置緩衝到期時間

更新時間:2025-02-25 19:03

緩衝到期時間指來源站點資源在CDN節點緩衝的時間長度,達到預設時間,資源將會被CDN節點標記為失效資源。如果用戶端向CDN節點請求的資源已經失效,CDN會回來源站點擷取最新資源並緩衝到CDN節點。您可以根據業務需求,按目錄或檔案尾碼名配置靜態資源的緩衝到期時間。

注意事項

  • 您成功添加網域名稱後,可以修改緩衝時間。設定的緩衝時間長短會導致回源流量不一樣,費用也有所不同,建議根據不同的業務需求設定緩衝時間長度。緩衝到期時間會影響回源頻率,建議根據實際業務需求設定資源緩衝時間長度。

    緩衝到期時間過短,會導致CDN頻繁回源,增加來源站點的流量消耗;緩衝到期時間過長,會帶來資料更新時間慢的問題。

  • 緩衝在CDN節點上的資源,如果該資源的訪問熱度較低(同一個CDN節點上的同一個資源被用戶端訪問的頻次較低),那麼很可能會在緩衝到期之前被CDN節點上其他訪問熱度較高的資源覆蓋

  • CDN節點在收到來源站點響應的靜態檔案資源的時候,預設會按照阿里雲CDNDCDN預設緩衝規則及優先順序來執行。

  • 建議您來源站點的內容不使用同名更新,而是採用版本號碼的方式同步。

    為了能準確找到更新前和更新後的來源站點內容,建議您來源站點的內容以版本號碼的方式同步,即更新來源站點內容時採用不同的名稱。例如,採用img-v1.0.jpgimg-v2.1.jpg的方式命名。

操作步驟

  1. 登入CDN控制台

  2. 在左側導覽列,單擊域名管理

  3. 域名管理頁面,找到目標網域名稱,單擊操作列的管理

  4. 在指定網域名稱的左側導覽列,單擊缓存配置

  5. 缓存过期时间頁簽下,單擊添加

  6. 添加缓存过期时间對話方塊,配置緩衝規則。

    緩衝到期時間

    參數

    說明

    參數

    說明

    类型

    支援按目录文件后缀名指定資源範圍。

    • 目录:為某一路徑下所有資源設定相同緩衝規則。

    • 文件后缀名:為某一檔案類型資源的設定相同緩衝規則。

    地址

    指定待配置資源的目錄或檔案尾碼名。

    • 類型選擇目錄時,填寫規則如下:

      • 每次只能添加單條目錄,可以用正斜線(/)匹配所有目錄。

      • 支援輸入目錄的完整路徑,須以正斜線(/)開頭,例如/directory/aaa

    • 類型選擇檔案尾碼名時,填寫規則如下:

      • 支援輸入一個或多個檔案尾碼名,多個檔案尾碼名用半形逗號(,)分隔,例如jpg,txt

      • 大小寫敏感,注意區分大小寫。

      • 不支援用星號(*)匹配所有的檔案類型。

    过期时间

    資源在CDN節點的緩衝時間,最長可以設定3年。建議參考如下規則配置:

    • 不常更新的靜態檔案(例如,圖片類型、應用下載類型等),建議設定1個月以上。

    • 頻繁更新的靜態檔案(例如,JS、CSS等),根據實際業務情況設定。

    • 動態檔案(例如,PHP、JSP、ASP等),建議設定為0s,即不緩衝。

    权重

    權重即緩衝規則的優先順序。取值為1~99,數值越大優先順序越高,對應規則優先生效。

    說明
    • 有多條緩衝規則的情況下,建議每條緩衝規則都設定不同的權重,通過權重來控制規則執行優先順序。

    • 權重相同的規則生效優先順序:先建立的>後建立的,與規則類型無關。

    • 如果配置了多條緩衝策略,其中一條緩衝策略生效後將不再繼續匹配其他的緩衝策略。

    規則條件

    規則條件能夠對使用者請求中攜帶的各種參數資訊進行識別,以此來決定某個配置是否對該請求生效。

    • 不使用:不使用規則條件。

    • 選擇已配置的規則引擎,新增或修改規則引擎請參見規則引擎

  7. 單擊確定,完成配置。

    您可以在缓存过期时间列表中,根據所需修改删除配置。

阿里雲CDN預設緩衝規則及優先順序

CDN節點在收到來源站點響應的檔案資源的時候,會按照以下的緩衝規則來執行(數值越小,優先順序越高):緩衝優先順序

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

  2. CDN控制台設定的緩衝到期時間或者狀態代碼到期時間。

    說明

    CDN請求同時命中多條規則,有且僅有一條規則會生效,優先順序為:權重>規則建立時間。

    • 有多條緩衝規則的情況下,建議每條緩衝規則都設定不同的權重(權重越大優先順序越高),通過權重來控制規則執行優先順序。

    • 權重相同的規則生效優先順序:先建立的>後建立的,與規則類型無關。

  3. 來源站點配置其他緩衝規則,優先順序由高至低為:cache-control>expires>last-modified>ETag

    1. 來源站點響應中使用cache-control設定到期時間,取值為max-ages-maxage,並且max-ages-maxage的值大於0,例如:cache-control:max-age=3600。如果同時存在max-ages-maxage,則以s-maxage的值為準。

    2. 來源站點響應中使用expires設定到期時間,例如:expires:Tue, 25 Nov 2031 17:25:43 GMT。

    3. 來源站點響應中攜帶了ETaglast-modified,則使用以下規則來計算緩衝時間:

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

      2. 只有ETag,緩衝10秒。

  4. 來源站點返回的資料中ETaglast-modifiedcache-controlexpires這些緩衝相關的回應標頭都沒有攜帶,則預設不緩衝。

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

    響應

配置樣本

樣本一:需要對“.txt”格式的檔案快取7天,在CDN控制台增加一條檔案名稱尾碼為“txt”的緩衝規則,緩衝到期時間設定為“7天”。

image.png

樣本二:為加速網域名稱demo.aliyun.com配置以下緩衝策略,CDN節點回源下載資源http://demo.aliyun.com/image/example.png,雖然以下兩條規則都匹配到了,但是因為這兩條規則的權重相同,因此要判斷規則建立的時間,先建立的規則優先順序高於後建立的,因為目錄/image這條規則建立的時間更早,所以系統最終生效的是目錄類型這條規則。image.png

相關API

BatchSetCdnDomainConfig

常見問題

  • 本頁導讀 (1, M)
  • 注意事項
  • 操作步驟
  • 阿里雲CDN預設緩衝規則及優先順序
  • HTTP協議緩衝控制機制說明
  • 配置樣本
  • 相關API
  • 常見問題
文檔反饋