[轉載]什麼是CDN緩存?

CDN是什麼?

簡單的說,CDN是Content Delivery Network的簡稱,即“內容分發網絡”的意思。一般我們所說的CDN加速,一般是指網站加速或者用戶下載資源加速。

CDN可以理解爲分佈在每個縣城的火車票代售點,用戶在瀏覽網站的時候,CDN會選擇一個離用戶最近的CDN邊緣節點來響應用戶的請求,這樣海南移動用戶的請求就不會千里迢迢跑到北京電信機房的服務器(假設源站部署在北京電信機房)上了。

CDN的優勢很明顯:

(1)CDN節點解決了跨運營商和跨地域訪問的問題,訪問延時大大降低;

(2)大部分請求在CDN邊緣節點完成,CDN起到了分流作用,減輕了源站的負載。

CDN緩存是什麼?

用戶瀏覽器與服務器交互,沒有接入CDN時:

用戶在瀏覽網站的時候,瀏覽器能夠在本地保存網站中的圖片或者其他文件的副本,這樣用戶再次訪問該網站的時候,瀏覽器就不用再下載全部的文件,減少了下載量意味着提高了頁面加載的速度。

用戶瀏覽器與服務器交互,接入CDN時:

客戶端瀏覽器先檢查是否有本地緩存是否過期,如果過期,則向CDN邊緣節點發起請求,CDN邊緣節點會檢測用戶請求數據的緩存是否過期,如果沒有過期,則直接響應用戶請求,此時一個完成http請求結束;如果數據已經過期,那麼CDN還需要向源站發出回源請求(back to the source request),來拉取最新的數據。

客戶端(瀏覽器)緩存

1)客戶端緩存的缺點

客戶端緩存減少了的服務器請求,避免了文件重複加載,顯著地提升了用戶地方。但是當網站發生了更新的時候(如替換了css、js以及圖片文件),瀏覽器本地仍保存着舊版本的文件,從而導致無法預料後果。

瀏覽器緩存刷新

  1. 在地址欄中輸入網址後按回車或點擊轉到按鈕

瀏覽器以最少的請求來獲取網頁的數據,瀏覽器會對所有沒有過期的內容直接使用本地緩存,從而減少了對瀏覽器的請求。所以,Expires,max-age標記只對這種方式有效。

  1. 按F5或瀏覽器刷新按鈕

瀏覽器會在請求中附加必要的緩存協商,但不允許瀏覽器直接使用本地緩存,它能夠讓 Last-Modified、ETag發揮效果,但是對Expires無效。

  1. 按Ctrl+F5或按Ctrl並點擊刷新按鈕

這種方式就是強制刷新,總會發起一個全新的請求,不使用任何緩存。

CDN緩存

瀏覽器本地緩存失效後,瀏覽器會向CDN邊緣節點發起請求。類似瀏覽器緩存,CDN邊緣節點也存在着一套緩存機制。

CDN緩存的缺點

CDN的分流作用不僅減少了用戶的訪問延時,也減少的源站的負載。但其缺點也很明顯:當網站更新時,如果CDN節點上數據沒有及時更新,即便用戶再瀏覽器使用Ctrl +F5的方式使瀏覽器端的緩存失效,也會因爲CDN邊緣節點沒有同步最新數據而導致用戶訪問異常。

CDN緩存策略

CDN邊緣節點緩存策略因服務商不同而不同,但一般都會遵循http標準協議,通過http響應頭中的Cache-control: max-age的字段來設置CDN邊緣節點數據緩存時間。

當客戶端向CDN節點請求數據時,CDN節點會判斷緩存數據是否過期,若緩存數據並沒有過期,則直接將緩存數據返回給客戶端;否則,CDN節點就會向源站發出回源請求,從源站拉取最新數據,更新本地緩存,並將最新數據返回給客戶端。

CDN服務商一般會提供基於文件後綴、目錄多個維度來指定CDN緩存時間,爲用戶提供更精細化的緩存管理。

CDN緩存時間會對“回源率”產生直接的影響。若CDN緩存時間較短,CDN邊緣節點上的數據會經常失效,導致頻繁回源,增加了源站的負載,同時也增大的訪問延時;若CDN緩存時間太長,會帶來數據更新時間慢的問題。開發者需要增對特定的業務,來做特定的數據緩存時間管理。

CDN緩存刷新

CDN邊緣節點對開發者是透明的,相比於瀏覽器Ctrl+F5的強制刷新來使瀏覽器本地緩存失效,開發者可以通過CDN服務商提供的“刷新緩存”接口來達到清理CDN邊緣節點緩存的目的。這樣開發者在更新數據後,可以使用“刷新緩存”功能來強制CDN節點上的數據緩存過期,保證客戶端在訪問時,拉取到最新的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章