刷新和預(yù)熱相關(guān)常見問題
本文為您介紹CDN刷新和預(yù)熱相關(guān)的常見問題。
刷新和預(yù)熱有什么區(qū)別?
刷新:把CDN所有節(jié)點上對應(yīng)的緩存資源標(biāo)記為失效,當(dāng)用戶再次請求時,CDN會直接回源站獲取對應(yīng)的資源并返回給用戶,同時將資源重新緩存到CDN節(jié)點。刷新功能會降低緩存命中率。
預(yù)熱:源站主動將對應(yīng)的資源緩存到CDN節(jié)點,當(dāng)您首次請求資源時,即可直接從CDN節(jié)點獲取到最新的資源,無需再回源站獲取。預(yù)熱功能會提高緩存命中率。
刷新和預(yù)熱有先后順序嗎?
刷新和預(yù)熱通常是兩種不同的操作,并不一定有嚴(yán)格的先后順序。但在實際應(yīng)用中,根據(jù)場景可能會有一個自然的邏輯順序。當(dāng)您的源站資源更新,需要更新CDN節(jié)點緩存時:
先刷新:刪除CDN緩存中的舊文件,讓后續(xù)的訪問都能獲取到源站上最新的內(nèi)容。
后預(yù)熱:待刷新任務(wù)生效后再進(jìn)行預(yù)熱操作,將最新的內(nèi)容緩存到CDN節(jié)點,保證用戶第一時間獲取到速度最快的服務(wù)。
如果您首次接入CDN,節(jié)點無緩存,可以直接執(zhí)行預(yù)熱操作,將資源緩存到CDN節(jié)點。
刷新預(yù)熱時,輸入源站URL還是加速域名URL?
刷新預(yù)熱是對加速域名對應(yīng)的URL內(nèi)容進(jìn)行操作,所以,您需要輸入的是基于加速域名下的URL,而不是源站的原始URL。這樣做的原因是CDN系統(tǒng)通過加速域名來識別和管理緩存資源,對加速域名下指定路徑的請求進(jìn)行刷新或預(yù)熱,可以確保CDN節(jié)點上的緩存內(nèi)容得到及時更新或提前加載。
如何刷新泛域名的緩存?
阿里云CDN不支持直接刷新整個泛域名下的所有緩存內(nèi)容,需要對具體的子域名對應(yīng)的目錄或特定URL路徑分別提交刷新請求,不能直接輸入https://*.example.com/file01.html或https://*.example.com/file02/。刷新多個URL時,請按照一行一個URL進(jìn)行輸入。
刷新和預(yù)熱任務(wù)需要多久生效?
刷新任務(wù)從提交到生效,大約需要5~6分鐘,如果文件或者目錄配置的緩存過期時間少于5分鐘,您無需執(zhí)行刷新操作,等待文件或者目錄緩存超時更新即可。
預(yù)熱任務(wù)從提交到預(yù)熱完成,實際執(zhí)行時間視預(yù)熱文件大小而定,大約需要5~30分鐘,文件平均大小越小,預(yù)熱速度越快。
預(yù)熱時能攜帶自定義請求頭預(yù)熱嗎?
預(yù)熱請求默認(rèn)攜帶的header是Accept-Encoding:gzip
,如果您需要預(yù)熱請求攜帶其他header,或者實現(xiàn)多副本預(yù)熱,那么可以使用OpenAPI接口PushObjectCache-預(yù)熱URL,并通過設(shè)定請求參數(shù)WithHeader
來實現(xiàn)自定義預(yù)熱header。
如何提高刷新和預(yù)熱的每日配額上限?
URL刷新和目錄刷新
默認(rèn)情況下,一個賬號每日最多可以提交10,000條URL刷新和100條目錄刷新,目錄刷新包含子目錄。如果您的阿里云賬號的日帶寬峰值大于200Mbps,您可以通過配額管理申請?zhí)嵘咳张漕~,阿里云將根據(jù)您業(yè)務(wù)的實際需求進(jìn)行評估和配置。
正則刷新
默認(rèn)情況下,一個賬號每日最多可以提交20條正則刷新,如果您的阿里云賬號的日帶寬峰值大于10Gbps,您可以通過填寫信息來申請?zhí)嵘咳张漕~。
預(yù)熱
默認(rèn)情況下,一個賬號每日最多可以提交1000條URL預(yù)熱任務(wù),如果您賬號的日帶寬峰值大于200Mbps,可通過配額管理申請?zhí)嵘咳张漕~,阿里云將根據(jù)您業(yè)務(wù)的實際需求進(jìn)行評估和配置。
每個賬號的預(yù)熱隊列最大為100,000條URL,CDN根據(jù)URL提交的先后順序進(jìn)行預(yù)熱;當(dāng)預(yù)熱隊列中待預(yù)熱的URL達(dá)到了100,000條時,CDN將會拒絕接收新的預(yù)熱任務(wù)。
是否支持自動化刷新或預(yù)熱?
如果您需要自動化刷新或預(yù)熱,請參見使用自動化腳本刷新和預(yù)熱。
如何查看CDN的預(yù)熱任務(wù)是否執(zhí)行完成?
登錄CDN控制臺。
在左側(cè)導(dǎo)航欄,單擊刷新預(yù)熱。
操作類型選擇預(yù)熱,在URL框內(nèi)輸入URL地址,單擊提交。提交預(yù)熱任務(wù)后,您可以在操作記錄頁簽中查看資源預(yù)熱的詳細(xì)記錄和進(jìn)度。預(yù)熱進(jìn)度為100%,表示預(yù)熱任務(wù)執(zhí)行完成。預(yù)熱數(shù)量多會影響預(yù)熱進(jìn)度,請您耐心等待。
說明預(yù)熱任務(wù)的狀態(tài)為成功,表示預(yù)熱任務(wù)提交成功,并不代表文件已經(jīng)預(yù)熱結(jié)束。
執(zhí)行如下命令,查看預(yù)熱任務(wù)的執(zhí)行狀態(tài)。
curl -I 'http://example.aliyundoc.com/test.json'
系統(tǒng)顯示類似如下。
說明Via的前半部分代表L2節(jié)點狀態(tài),其中的“H”表示命中,說明文件已經(jīng)預(yù)熱到L2節(jié)點,不需要再回源站。
Via的后半部分代表L1節(jié)點的狀態(tài),“M”表示L1節(jié)點上沒有緩存,需要向L2節(jié)點回源。
相關(guān)文檔
調(diào)用DescribeRefreshTaskById,查詢刷新狀態(tài)和預(yù)熱狀態(tài)是否在全網(wǎng)生效,詳情請參見DescribeRefreshTaskById - 查詢刷新預(yù)熱任務(wù)-按ID。
配置CDN后如何對文件進(jìn)行同名更新?
使用CDN加速資源時,請參見以下方法進(jìn)行文件更新:
建議您源站的內(nèi)容不使用同名更新,而是采用版本號的方式同步。
為了能準(zhǔn)確找到更新前和更新后的源站內(nèi)容,建議您源站的內(nèi)容以版本號的方式同步,即更新源站內(nèi)容時采用不同的名稱。例如,采用img-v1.0.jpg、img-v2.1.jpg的方式命名。
對于必須進(jìn)行同名更新的文件,可以從控制臺或是OpenAPI提交刷新請求。控制臺操作請參見刷新和預(yù)熱資源,OpenAPI操作請參見刷新預(yù)熱。使用CDN刷新預(yù)熱功能后,訪問的資源如沒有更新,請參見為什么使用CDN刷新預(yù)熱功能后訪問的資源沒有更新?
預(yù)熱失敗了怎么辦?
預(yù)熱失敗的可能原因是:
確認(rèn)URL正確性:驗證預(yù)熱的URL是否正確,包括是否有拼寫錯誤、路徑錯誤或者文件實際不存在等問題,確認(rèn)URL是否可以直接在瀏覽器中訪問。
檢查源站狀態(tài):確認(rèn)源站服務(wù)器是否正常工作,沒有出現(xiàn)過載或宕機情況,如不能正常訪問也將造成預(yù)熱失敗。
控制預(yù)熱任務(wù)的數(shù)量:如果同時提交了大量的預(yù)熱任務(wù),可能會因為系統(tǒng)繁忙導(dǎo)致一部分任務(wù)失敗。預(yù)熱時請盡量分批次執(zhí)行,避免對源站帶寬造成過大壓力。
檢查資源可緩存性:
確認(rèn)預(yù)熱的資源是否允許被緩存。如果資源設(shè)置了
Cache-Control
頭部為no-cache
、no-store
或private
,并且CDN配置遵循源站頭信息,則會導(dǎo)致資源無法被緩存。檢查資源對應(yīng)的緩存過期時間(如
Expires
或max-age
),確保其不是0,非零值表示資源可以被緩存。
CDN緩存規(guī)則請參見阿里云CDN默認(rèn)緩存規(guī)則及優(yōu)先級。
目前不支持預(yù)熱目錄。
為什么使用CDN刷新預(yù)熱功能后訪問的資源沒有更新?
問題原因
導(dǎo)致資源沒有更新的常見原因有以下3種:
使用CDN刷新預(yù)熱雖然清除了CDN緩存,但是受到瀏覽器緩存的影響,導(dǎo)致訪問到舊的資源。
源站的資源沒有更新,本身就是舊的資源。
刷新預(yù)熱任務(wù)沒有執(zhí)行完畢。
解決方案
根據(jù)問題原因選擇其對應(yīng)的解決方法:
嘗試清理瀏覽器緩存,然后刷新頁面,查看資源是否更新。
將站點域名直接綁定源站(通過修改本地host的方式),直接訪問源站,檢查源站的資源是否更新。如果資源沒有更新,請更新源站的資源,再使用CDN加速。
登錄CDN控制臺,檢查刷新預(yù)熱任務(wù)是否執(zhí)行完畢,如果沒有執(zhí)行完畢,建議重新執(zhí)行任務(wù),如何執(zhí)行請參見刷新和預(yù)熱資源。
是否需要分別對HTTP和HTTPS刷新和預(yù)熱?
不需要,只需要刷新或預(yù)熱HTTP或HTTPS其中一種即可。例如您需要預(yù)熱aaa.mp4文件,您只需預(yù)熱https://example.com/aaa.mp4
即可,不必再預(yù)熱http://example.com/aaa.mp4
。
是否支持預(yù)熱M3U8文件?
M3U8文件是一種基于HTTP Live Streaming (HLS) 的視頻流媒體播放列表格式,它由蘋果公司開發(fā)。M3U8是M3U播放列表文件的擴展,其中“8”代表文件使用UTF-8字符編碼。該文件格式通常用于在線流媒體服務(wù),以提供連續(xù)播放的多媒體內(nèi)容。M3U8文件是一個純文本文件,包含了分段(通常是TS或MP4文件)視頻文件的路徑信息,這些分段視頻文件被稱為“切片”。
預(yù)熱只作用于M3U8文件本身,不會自動預(yù)熱列表中引用的各個TS切片文件。您可以使用腳本來預(yù)熱M3U8文件,詳情請參見CDN和視頻點播中使用腳本刷新預(yù)熱M3U8資源。
已經(jīng)進(jìn)行了緩存預(yù)熱,為什么下載速度先快后慢?
CDN預(yù)熱是多個節(jié)點同時進(jìn)行下載,開始某個節(jié)點的下載速度較快,隨著更多節(jié)點的加入,下載速度受到源站服務(wù)器帶寬的影響,呈現(xiàn)先快后慢的情況。對于帶寬較小的源站服務(wù)器所需預(yù)熱時間會長一點,因此,可以通過升級帶寬來解決或者使用OSS來存儲大文件。使用CDN對OSS資源進(jìn)行加速,以獲得更好的加速效果。