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