基礎(chǔ)知識
服務(wù)器離用戶越近,HTTP請求的響應(yīng)時間將更短。
CNAME:別名記錄,當(dāng)多個域名需要指向同一服務(wù)器IP,可以使用一個域名做A記錄指向該服務(wù)器IP,然后讓多個域名指向該A記錄。
ICP:Internet Content Providor。
DNS:Domain Name System。
什么是內(nèi)容分發(fā)網(wǎng)絡(luò)?
CDN(Content Deliver Network)是一組分布在多個不同地理位置的Web服務(wù)器,通過將網(wǎng)站的資源發(fā)布到最接近用戶的網(wǎng)絡(luò)”邊緣“,供用戶就近取得所需內(nèi)容。CDN可以看作一種緩存代理,主要用于對靜態(tài)資源(如圖片,css,js等)的緩存。
CDN的網(wǎng)絡(luò)架構(gòu)
CDN的網(wǎng)絡(luò)架構(gòu)主要分為中心和邊緣兩個部分,中心服務(wù)器主要負(fù)責(zé)DNS解析和全局負(fù)載均衡;而邊緣服務(wù)器指異地節(jié)點,作為CDN分發(fā)的載體,包括負(fù)載均衡和高速緩存。邊緣服務(wù)器的負(fù)載均衡負(fù)責(zé)緩存內(nèi)容的負(fù)載均衡,保證節(jié)點的工作效率,同時還負(fù)責(zé)與中心服務(wù)器通信,實現(xiàn)整個系統(tǒng)的負(fù)載均衡。邊緣服務(wù)器的高速緩存負(fù)責(zé)存儲從客戶源服務(wù)器獲取的資源,并提供給本地用戶訪問。
CDN的工作原理
除了一些大型互聯(lián)網(wǎng)公司擁有自己的CDN,其他公司基本都會選擇CDN運(yùn)營商合作。
所以作為ICP,需要把域名解釋權(quán)交給CDN運(yùn)營商,操作時ICP修改自己的域名解析部分,一般用CNAME的方式,將自己的靜態(tài)資源域名指向一個CDN提供的CNAME。
而作為CDN運(yùn)營商,需要對CNAME提供專用DNS解析,同時需要維護(hù)客戶服務(wù)器的域名和IP地址映射列表。
CDN工作流程如下:
1.瀏覽器獲得需要訪問的資源的域名;
2.通過域名解析得到該域名指向CDN的一個CNAME;
3.為了獲得IP地址,需要對CNAME進(jìn)行域名解析,這時請求就會被發(fā)送到CDN的中心服務(wù)器,全局負(fù)載均衡通過預(yù)先設(shè)定的規(guī)則,同時根據(jù)用戶訪問的地理位置信息,把最合適的邊緣服務(wù)器IP地址返回;
4.瀏覽器獲得IP地址后,就向邊緣服務(wù)器發(fā)出請求;
5.邊緣服務(wù)器根據(jù)訪問域名,首先搜索緩存,查看資源是否存在,存在則直接返回資源給瀏覽器,直接完成整個資源請求過程,否則就根據(jù)緩存內(nèi)部的DNS解析得到資源實際IP地址(即客戶的服務(wù)器IP地址),向該IP地址發(fā)起資源請求;
6.邊緣服務(wù)器向客戶服務(wù)器請求資源成功后,就把該資源加入本身的高速緩存中,并把資源發(fā)送給用戶。
CDN的簡單應(yīng)用
其實CDN的使用并沒有和我們想象中那么遙遠(yuǎn),JQuery應(yīng)該是當(dāng)今Web開發(fā)領(lǐng)域使用最為廣泛的js框架之一,很多時候我們的網(wǎng)站都需要引用一個jquery.min.js的引用,我們可以將這個js文件存儲在自己的服務(wù)器,或者更好的選擇:使用大公司的CDN服務(wù)提供的jquery.min.js. 微軟和google都提供了jquery的CDN免費服務(wù),你只需做的事情就是在項目中引用它們,就能享受CDN帶來的便利。