緩存學習(三)CDN緩存(上)-CDN初認識


CDN

CDN的全稱是Content Delivery Network,即內容分發網絡。

其目的是通過在現有的Internet中增加一層新的網絡架構,將網站的內容發布到最接近用戶的網絡"邊緣",使用戶可 以就近取得所需的內容,解決Internet網絡擁塞狀況,提高用戶訪問網站的響應速度。從技術上全面解決由於網絡帶寬小、用戶訪問量大、網點分布不均等 原因,解決用戶訪問網站的響應速度慢的根本原因。

那么CDN底層主要是通過什么樣的手段去實現的呢?

其實它就相當於在客戶的就近的地區,布置了對應的節點,主要是將資源緩存在 CDN 節點上(並且把對應的一些靜態資源,比如說圖片、視頻等這些資源預先先緩存到對應的節點上。)以后,在用戶訪問的時候,我們就可以直接通過節點去拉起對應的資源並返回給客戶,就不需要再回源了。這樣的操作就縮短了客戶端到服務器端的一個鏈路,提升了整個站點的ISP、地域兼容性。

CDN節點數量

全國多個機房,每個機房多台服務器,CDN節點一般上百台

CDN 的緩存適用范圍

CDN 對於常見的 HTTP 請求均是支持的,具體對不同請求方式的支持情況請參考表一。但是有一點需要注意的是雖然對這些類型的 HTTP 請求均是支持的,但是並不是對所有請求方式都會進行緩存的。 CDN 僅會對於 GET 請求進行緩存,而對於其他的請求均不進行緩存,僅是起到中間代理、轉發的功能。(對於http協議里其他請求比如說put以及POST等動態回源的一些請求,CDN可能就不會去做任何緩存的處理,而是直接透傳給源站,然后由源站進行對應的處理后返回給客戶端。)因此我們建議添加 CDN 的站點源站最好能夠實現動靜分離。將動態請求和靜態請求的內容獨立成兩個站點,而 CDN 僅僅加速靜態站點中的資源。

                                                                        表一. CDN 對 HTTP 請求支持情況

請求方式 描述 是否支持
GET 從指定的資源請求數據 支持
POST 向指定的資源提交要被處理的數據 支持
HEAD 與 GET 相同,但只返回 HTTP 報頭,不返回文檔主體 支持
PUT 上傳指定的 URI 支持
DELETE 刪除指定資源 支持
OPTIONS 返回服務器支持的 HTTP 方法 支持
CONNECT 把請求連接轉換到透明的 TCP/IP 通道 不支持



注意

  • CDN 處理 HEAD 請求時會將 HEAD 請求轉換成 GET 請求回源,因此源站日志中記錄的是 GET 請求。
  • CDN 僅支持 POST 和 PUT 方式發送帶有請求體(BODY)的 HTTP 請求。

CDN緩存什么內容

緩存html、圖片、css、xml等靜態資源,不緩存含有?的動態地址、jsp、php,js文件也不緩存【除非特殊設置】

緩存原站返回HTTP狀態為20*或304,不緩存其他狀態(例如404,500,503)

CDN緩存內容的更新

a)用戶首次請求,CDN從原站抓取后緩存,直到文件過期后有用戶請求再次更新

b)程序主動通知CDN抓取

CDN返回response頭解讀

我們在實際使用的過程中,我們又如何查看當前這個文件到底有沒有在CDN節點上緩存或者它緩存的時間是多少呢?

資源在經過CDN節點以后,一定會在對應的http的response頭里加若干的字段,如圖即是常見的通過 CDN 訪問的響應頭,可以根據 X-Cache 查看當前該資源是否有在 CDN的 L1 節點緩存,而查看 L2 節點的緩存情況則需要根據 Via 頭中的第一部分查看,如果是 M 即是 MISS,表示對應的資源沒有在對應的CDN節點上緩存;而出現 H表示對應的資源有在CDN節點上緩。X-Swift-SaveTime 表示該資源緩存到 CDN 節點上的 GMT 時間(相比於北京時間晚8小時);而 X-Swift-CacheTime 表示該資源在 CDN 節點上緩存多長時間會過期。

VIA字段

VIA字段,包含有四段信息,其中第一段和第三段會有一個M或者H的標識。第一段說明L2節點的緩存情況,第三段指的是L1節點的緩存情況,這兩個其中有一個包含H,就表示對應的資源已經在CDN節點上進行了緩存。那這一次訪問就不需要再回到源站拉取對應的資源了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM