1、CDN
CDN部署靜態(tài)內(nèi)容:JavaScript腳本、CSS樣式表、圖片、圖標(biāo)、Flash等,不包括html頁面。
CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。
CDN是一組分布在多個不同地理位置的Web服務(wù)器,用于更加有效地向用戶發(fā)布內(nèi)容,在優(yōu)化性能時,會根據(jù)距離的遠(yuǎn)近來選擇。
CDN系統(tǒng)能實時地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點的連接,負(fù)載狀況及用戶的距離和響應(yīng)時間等綜合信息將用戶的請求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點上,其目的是使用戶能就近地獲取請求數(shù)據(jù),解決網(wǎng)絡(luò)擁塞,提高訪問速度,解決由于網(wǎng)絡(luò)帶寬小、用戶訪問量大、網(wǎng)點分布不均等原因?qū)е碌脑L問速度慢的問題。
由于CDN部署在網(wǎng)絡(luò)運(yùn)營商的機(jī)房,這些運(yùn)營商又是終端用戶網(wǎng)絡(luò)的提供商,因此用戶請求的第一跳就到達(dá)CDN服務(wù)器,當(dāng)CDN服務(wù)器中緩存有用戶請求的數(shù)據(jù)時,就可以從CDN直接返回給瀏覽器,因此可以提高訪問速度。
CDN能夠緩存JavaScript腳本、CSS樣式表、圖片、圖標(biāo)、Flash等靜態(tài)資源文件(不包括html頁面),這些靜態(tài)資源文文件的訪問頻率很高,將其緩存在CDN可以極大地提高網(wǎng)站的訪問速度,但由于CDN是部署在網(wǎng)絡(luò)運(yùn)營商的機(jī)房,所以在一般的網(wǎng)站中都很少用CDN加速。
2、傳統(tǒng)的訪問網(wǎng)站的過程:
1)?用戶向瀏覽器提供要訪問的域名;
2)?瀏覽器調(diào)用域名解析函數(shù)庫對域名進(jìn)行解析,以得到此域名對應(yīng)的IP地址;
3)?瀏覽器使用所得到的IP地址,域名的服務(wù)主機(jī)發(fā)出數(shù)據(jù)訪問請求;
4)?瀏覽器根據(jù)域名主機(jī)返回的數(shù)據(jù)顯示網(wǎng)頁的內(nèi)容。
?
3、使用CDN緩存后的訪問網(wǎng)站的過程:
1)?用戶向瀏覽器提供要訪問的域名;
2)?瀏覽器調(diào)用域名解析庫對域名進(jìn)行解析,由于CDN對域名解析過程進(jìn)行了調(diào)整,所以解析函數(shù)庫一般得到的是該域名對應(yīng)的CNAME記錄,為了得到實際IP地址,瀏覽器需要再次對獲得的CNAME域名進(jìn)行解析以得到實際的IP地址;在此過程中,使用的全局負(fù)載均衡DNS解析,如根據(jù)地理位置信息解析對應(yīng)的IP地址,使得用戶能就近訪問;
3)?此次解析得到CDN緩存服務(wù)器的IP地址,瀏覽器在得到實際的IP地址以后,向緩存服務(wù)器發(fā)出訪問請求;
4)?緩存服務(wù)器根據(jù)瀏覽器提供的要訪問的域名,通過Cache內(nèi)部專用DNS解析得到此域名的實際IP地址,再由緩存服務(wù)器向此實際IP地址提交訪問請求;
5)?緩存服務(wù)器從實際IP地址得得到內(nèi)容以后,一方面在本地進(jìn)行保存,以備以后使用,二方面把獲取的數(shù)據(jù)返回給客戶端,完成數(shù)據(jù)服務(wù)過程;
6)?客戶端得到由緩存服務(wù)器返回的數(shù)據(jù)以后顯示出來并完成整個瀏覽的數(shù)據(jù)請求過程。
?
4、最簡單的CDN實例:
以愛誠官網(wǎng)例,如www.190888.cc, m.ac57.com等等,它們之間會共享某些內(nèi)容(如JavaScript、CSS、image、jQuery等),這些公共資源可以放在common.ac57.com這樣的公共站點上。
以京東為例,廣州的用戶請求某圖片,只需要從廣州的網(wǎng)絡(luò)運(yùn)營商機(jī)房的CDN緩存服務(wù)器獲取圖片即可。
?
5、知名的CDN服務(wù):
阿里云的CDN服務(wù):https://www.aliyun.com/product/cdn
百度的CDN服務(wù):https://su.baidu.com/
6、使用CDN的劣勢
使用CDN,尤其是非知名的第三方CDN,需要考慮網(wǎng)絡(luò)的可到達(dá)性。第三方的CDN的Host在別人的服務(wù)器上,從一定意義上說并非很可控。目前比較知名的包括阿里云,百度云,騰訊云,360云加速等!