Content Delivery Network之研究

Content Delivery Network簡稱為CDN,將主網站的資料派送到全世界的CDN主機,然後就近(通常是地域性)的提供服務。

運行流程圖以及要點如下:

  1. 用戶在流覽器中輸入要訪問的功能變數名稱。
  2. 流覽器向功能變數名稱解析伺服器發出解析請求,由於CDN對功能變數名稱解析過程進行了調整,所以用戶端一般得到的是該功能變數名稱對應的CNAME記錄,此時流覽器需要再次對獲得的CNAME功能變數名稱進行解析才能得到緩存伺服器實際的IP位址。(在此過程中,全域負載均衡DNS解析伺服器會根據使用者端的源IP位址,如地理位置(深圳還是上海)、接入網類型(電信還是網通)將用戶的訪問請求定位到離用戶路由最短、位置最近、負載最輕的Cache節點(緩存伺服器)上,實現就近定位。定位優先原則可按位置、可按路由、也可按負載等。)
  3. 再次解析後流覽器得到該功能變數名稱CDN緩存伺服器的實際IP位址,向緩存伺服器發出訪問請求。
  4. 緩存伺服器根據流覽器提供的功能變數名稱,通過Cache內部專用DNS解析得到此功能變數名稱原始伺服器的真實IP地址,再由緩存伺服器向此真實IP位址提交訪問請求。
  5. 緩存伺服器從真實IP位址得到內容後,一方面在本地進行保存,以備以後使用,同時把得到的資料發送到用戶端流覽器,完成訪問的回應過程。
  6. 用戶端得到由緩存伺服器傳回的資料後顯示出來,至此完成整個功能變數名稱訪問過程。

有免費的CDN供應商,但至目前為止,沒有人提到動態網頁的對策(個人認為動態資料被快取,有很大的風險),也沒有人提到資訊安全的問題。

Free CDN:CloudFlare

http://www.cloudflare.com/

CloudFlare教學:

http://sofun.tw/cloudflare/

測試你的網站在中國的速度:

http://www.webluker.com/

另外一種作法,就是把現代網站大量使用的CSS, JS丟到免費的CDN,例如 google Code 上面,用它本身的CDN機制來分散你網站的負擔,這也是一種免錢的作法,缺點是你只能選用標準的Framework,改都別想改。

https://developers.google.com/speed/libraries/devguide?hl=zh-TW

承上一種作法的再變型,就是使用Amazon的CDN服務,也就是把你自己開發所有的圖片、JS、CSS送上去,讓它分散流量,當然,這種作法是要收錢的,但聽說不是很貴就是了。

http://aws.amazon.com/cloudfront/

ContentDeliveryNetwork CDN NetworkLoadBalance