緩存過期時間指源站資源在DCDN節點緩存的時長,達到預設時間,資源將會被DCDN節點標記為失效資源。如果客戶端向DCDN節點請求的資源已經失效,DCDN會回源站獲取最新資源并緩存到DCDN節點。您可以根據業務需求,按目錄或文件后綴名配置靜態資源的緩存過期時間。
注意事項
您成功添加域名后,可以修改緩存時間。設置的緩存時間長短會導致回源流量不一樣,費用也有所不同,建議根據不同的業務需求設置緩存時長。緩存過期時間會影響回源頻率,建議根據實際業務需求設置資源緩存時長。
緩存過期時間過短,會導致DCDN頻繁回源,增加源站的流量消耗;緩存過期時間過長,會帶來數據更新時間慢的問題。
緩存在DCDN節點上的資源,如果該資源的訪問熱度較低(同一個DCDN節點上的同一個資源被客戶端訪問的頻次較低),那么很可能會在緩存過期之前被DCDN節點上其他訪問熱度較高的資源覆蓋。
DCDN節點在收到源站響應的靜態文件資源的時候,會按照阿里云DCDN默認緩存規則及優先級來執行,動態文件資源緩存規則請參見動靜態加速規則概述。
建議您源站的內容不使用同名更新,而是采用版本號的方式同步。
為了能準確找到更新前和更新后的源站內容,建議您源站的內容以版本號的方式同步,即更新源站內容時采用不同的名稱。例如,采用img-v1.0.jpg、img-v2.1.jpg的方式命名。
操作步驟
登錄DCDN控制臺。
在左側導航欄,單擊域名管理。
- 在域名管理頁面,單擊目標域名對應的配置。
在指定域名的左側導航欄,單擊緩存配置。
在緩存過期時間頁簽下,單擊添加。
在緩存過期時間對話框,配置緩存規則。
參數
說明
類型
支持目錄或文件后綴名指定資源范圍
目錄:為某一路徑下所有資源設置相同緩存規則。
文件后綴名:為某一文件類型資源的設置相同緩存規則。
內容
指定待配置資源的目錄或文件后綴名。
當類型選擇目錄時,填寫說明如下:
每次只能添加單條目錄,可以用正斜線(/)匹配所有目錄。
支持輸入目錄的完整路徑,須以正斜線(/)開頭,例如/directory/aaa。
當類型選擇文件后綴名時,填寫說明如下:
支持輸入一個或多個文件后綴名,多個文件后綴名用英文逗號(,)分隔,例如
jpg,txt
,大小寫敏感,注意區分大小寫。支持的靜態文件類型如下:
圖片:GIF、PNG、BMP、JPEG、JPG。
頁面:HTML、HTM、SHTML。
音視頻:MP3、WMA、FLV、MP4、WMV、OGG、AVI。
文本:DOC、DOCX、XLS、XLSX、PPT、PPTX、TXT、PDF。
其他:ZIP、EXE、TAT、ICO、CSS、JS、SWF、APK、M3U8、TS、EJS、SVG、WOFF、OTF。
不支持用星號(*)匹配所有的文件類型。
過期時間
資源對應的緩存過期時間,最長可以設置3年。設置規則如下:
不經常更新的靜態文件:例如,圖片類型、應用下載類型等,建議設置1個月以上。
頻繁更新的靜態文件:例如,JS、CSS等,您可以根據實際業務情況設置。
動態文件:例如,PHP、JSP、ASP等,建議設置為0s,即不緩存。
權重
權重即緩存規則的優先級。取值為1~99,數值越大優先級越高,對應規則優先生效。
說明有多條緩存規則的情況下,建議每條緩存規則都設置不同的權重,通過權重來控制規則執行優先級。
權重相同的規則生效優先級:先創建的>后創建的,與規則類型無關。
如果配置了多條緩存策略,其中一條緩存策略生效后將不再繼續匹配其他的緩存策略。
單擊確定,完成配置。
成功配置緩存過期時間后,您可以在緩存過期時間列表中,根據所需修改或刪除配置。
阿里云DCDN默認緩存規則及優先級
DCDN節點在收到源站響應的靜態文件資源的時候,會按照以下的緩存規則來執行(數值越小,優先級越高):
源站響應
pragma:no-cache
、cache-control:no-cache
(或者no-store
,或者max-age=0
)時,不緩存。DCDN控制臺設置的緩存過期時間或者狀態碼過期時間。
說明若DCDN請求同時命中多條規則,有且僅有一條規則會生效,優先級為:權重>規則創建時間。
有多條緩存規則的情況下,建議每條緩存規則都設置不同的權重(權重越大優先級越高),通過權重來控制規則執行優先級。
權重相同的規則生效優先級:先創建的>后創建的,與規則類型無關。
源站配置其他緩存規則,優先級由高至低為:
cache-control
>expires
>last-modified
>ETag
。源站響應中使用
cache-control
設置過期時間,取值為max-age
或s-maxage
,并且max-age
或s-maxage
的值大于0,例如:cache-control:max-age=3600。如果同時存在max-age
和s-maxage
,則以s-maxage
的值為準。源站響應中使用
expires
設置過期時間,例如:expires:Tue, 25 Nov 2031 17:25:43 GMT。源站響應中攜帶了
ETag
或last-modified
,則使用以下規則來計算緩存時間:有
last-modified
,使用公式(當前時間-last-modified
)* 0.1,計算結果在10秒~3600秒及之間的,取計算結果時間;小于10秒的,按照10秒處理;大于3600秒的,按照3600秒處理。只有
ETag
,緩存10秒。
源站返回的數據中
ETag
、last-modified
、cache-control
和expires
這些緩存相關的響應頭都沒有攜帶,則默認不緩存。
HTTP協議緩存控制機制說明
在HTTP協議中定義了三種不同類型的協議頭部來實現緩存控制相關的機制:
客戶端在向服務端請求資源的過程中,雙方將為資源約定一個過期時間,在該過期時間之前,該資源(緩存副本)就是有效的,過了過期時間后,該資源(緩存副本)就會失效。
在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
請求/響應
客戶端在首次向服務端請求資源的過程中,服務端將在響應頭中帶上資源標簽,資源標簽可以作為客戶端再次請求同一資源時的校驗標識。客戶端再次請求同一資源時,請求頭中將會攜帶資源標簽,若服務端校驗后認為該資源沒有更新,則響應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"
響應
緩存軟件使用關鍵字索引在磁盤中緩存的對象,在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
,告知接收端(例如:DCDN節點)對于該資源需緩存兩個版本(壓縮和未壓縮)??蛻舳讼?span data-tag="ph" id="706afbd034aq5" docid="1039844" class="ph">DCDN請求同一個資源時,老版本瀏覽器緩獲取未壓縮資源(避免兼容性問題),新版本瀏覽器獲取壓縮資源(減少數據傳輸流量)。服務端指定
Vary: User-Agent
,用來識別發送請求的瀏覽器類型,告知接收端(例如:DCDN節點),根據不同的瀏覽器類型緩存對應版本的資源。
Vary: Accept-Encoding
Vary: Accept-Encoding,User-Agent
響應
配置示例
示例一:需要對“.txt”格式的文件緩存7天,在DCDN控制臺增加一條文件名后綴為“.txt”的緩存規則,緩存過期時間設置為“7天”。
示例二:為加速域名demo.aliyun.com
配置以下緩存策略,DCDN節點回源下載資源http://demo.aliyun.com/image/example.png
,雖然以下兩條規則都匹配到了,但是因為這兩條規則的權重相同,因此要判斷規則創建的時間,先創建的規則優先級高于后創建的,因為目錄/image這條規則創建的時間更早,所以系統最終生效的是目錄類型這條規則。