Web前端性能優化教程02:使用內容分發網絡

本文是Web前端性能優化系列文章中的第二篇,主要講述CDN的原理及簡單應用。完整教程可查看:Web前端性能優化

基礎知識

服務器離用戶越近,HTTP請求的響應時間將更短。

CNAME:別名記錄,當多個域名需要指向同一服務器IP,可以使用一個域名做A記錄指向該服務器IP,然後讓多個域名指向該A記錄。

ICP:Internet Content Providor。

DNS:Domain Name System。

什麼是內容分發網絡?

CDN(Content Deliver Network)是一組分佈在多個不同地理位置的Web服務器,通過將網站的資源發佈到最接近用戶的網絡邊緣,供用戶就近取得所需內容。CDN可以看作一種緩存代理,主要用於對靜態資源(如圖片,css,js等)的緩存。

CDN的網絡架構

CDN的網絡架構主要分為中心和邊緣兩個部分,中心服務器主要負責DNS解析和全局負載均衡;而邊緣服務器指異地節點,作為CDN分發的載體,包括負載均衡和高速緩存。邊緣服務器的負載均衡負責緩存內容的負載均衡,保證節點的工作效率,同時還負責與中心服務器通信,實現整個系統的負載均衡。邊緣服務器的高速緩存負責存儲從客戶源服務器獲取的資源,並提供給本地用戶訪問。

CDN的工作原理

除瞭一些大型互聯網公司擁有自己的CDN,其他公司基本都會選擇CDN運營商合作。

所以作為ICP,需要把域名解釋權交給CDN運營商,操作時ICP修改自己的域名解析部分,一般用CNAME的方式,將自己的靜態資源域名指向一個CDN提供的CNAME。

而作為CDN運營商,需要對CNAME提供專用DNS解析,同時需要維護客戶服務器的域名和IP地址映射列表。

CDN工作流程如下:

1.瀏覽器獲得需要訪問的資源的域名;

2.通過域名解析得到該域名指向CDN的一個CNAME;

3.為瞭獲得IP地址,需要對CNAME進行域名解析,這時請求就會被發送到CDN的中心服務器,全局負載均衡通過預先設定的規則,同時根據用戶訪問的地理位置信息,把最合適的邊緣服務器IP地址返回;

4.瀏覽器獲得IP地址後,就向邊緣服務器發出請求;

5.邊緣服務器根據訪問域名,首先搜索緩存,查看資源是否存在,存在則直接返回資源給瀏覽器,直接完成整個資源請求過程,否則就根據緩存內部的DNS解析得到資源實際IP地址(即客戶的服務器IP地址),向該IP地址發起資源請求;

6.邊緣服務器向客戶服務器請求資源成功後,就把該資源加入本身的高速緩存中,並把資源發送給用戶。

CDN的簡單應用

其實CDN的使用並沒有和我們想象中那麼遙遠,JQuery應該是當今Web開發領域使用最為廣泛的js框架之一,很多時候我們的網站都需要引用一個jquery.min.js的引用,我們可以將這個js文件存儲在自己的服務器,或者更好的選擇:使用大公司的CDN服務提供的jquery.min.js. 微軟和google都提供瞭jquery的CDN免費服務,你隻需做的事情就是在項目中引用它們,就能享受CDN帶來的便利。

延伸閱讀:

  • 2014年國內、外十個優秀的免費CDN加速服務
  • 初創企業必讀:CDN 選擇指南
  • 網站加速哪傢強?四大免費CDN服務評測大PK