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