使用CDN后,源站的文件將(jiang)在CDN節點上緩(huan)存。此時如(ru)果有同名(ming)文件需要更新(xin),可通(tong)過如(ru)下兩種方式:
一、被動更新
被(bei)動更(geng)新(xin)機制(zhi)指的(de)是通過設置CDN緩存(cun)過期時間,實現(xian)CDN節點上的(de)文件定期與源站文件進行比(bi)對,從(cong)而實現(xian)更(geng)新(xin)。
緩存(cun)過(guo)期時(shi)間(jian)指源站資源在(zai)CDN節點(dian)(dian)緩存(cun)的時(shi)長(chang),達(da)到(dao)預設時(shi)間(jian)后,緩存(cun)的資源將會(hui)(hui)被CDN節點(dian)(dian)標記為緩存(cun)過(guo)期。此時(shi)如(ru)(ru)果客戶(hu)端向CDN節點(dian)(dian)請(qing)求(qiu)該資源,CDN會(hui)(hui)攜帶If-Modified-Since請(qing)求(qiu)頭或Etag請(qing)求(qiu)頭回(hui)源站校驗內容是否有更新(xin),如(ru)(ru)有更新(xin)則獲取最新(xin)資源并緩存(cun)到(dao)CDN節點(dian)(dian)。用(yong)戶(hu)可(ke)以根據業務需求(qiu),按指定路徑或文件(jian)名后綴等方(fang)式配置靜態資源的緩存(cun)過(guo)期時(shi)間(jian)。
二、主動更新
CDN一般會在被(bei)動(dong)更(geng)(geng)新(xin)(xin)的(de)同時,提供主(zhu)動(dong)更(geng)(geng)新(xin)(xin)機制。如果(guo)源站對某(mou)個同名文(wen)件(jian)進(jin)行更(geng)(geng)新(xin)(xin)后(hou),希望CDN節點(dian)能馬上感知到(dao)更(geng)(geng)新(xin)(xin),從而(er)讓用戶實(shi)時訪問到(dao)最新(xin)(xin)文(wen)件(jian),此時可以通過主(zhu)動(dong)刷新(xin)(xin)來(lai)實(shi)現。
CDN一般會提供URL刷新(xin)、目錄刷新(xin)和正(zheng)則(ze)刷新(xin)三種(zhong)內容刷新(xin)方式。不同刷新(xin)方式實(shi)現機制(zhi)稍有不同,但最終(zhong)都能確(que)保用戶訪問時獲得(de)最新(xin)的內容。
- URL刷新:執行URL刷新請求后,CDN節點會直接刪除URL對應的緩存內容,此時,如果客戶端向CDN節點請求該內容,節點會回源站獲取并緩存新的內容,同時返回給用戶。
- 目錄刷新/正則刷新:執行目錄或正則刷新請求后,節點緩存將被標記為緩存過期狀態(也叫緩存置過期),此時,如果客戶端向CDN節點請求該內容,節點會攜帶If-Modified-Since請求頭或If-None-Match請求頭回源站校驗內容是否有更新。如果源站響應304,說明源站內容未更新,節點則只更新緩存狀態不拉取新內容,使用已有緩存響應給用戶;如果源站響應200或206,說明源站內容有更新,節點將拉取新內容并緩存,使用新內容響應給用戶。