認真瞭解一下CDN

CDN的基本工做過程
CDN——到底用仍是不用?
項目中會看到不少CDN存儲,也聽大神們經常提及咱們什麼什麼資源是存儲在CDN上的,一直處於只知其一;不知其二的狀態,本着求知的精神,專門去查了一下,終於瞭解這是個什麼東東。jquery

爲何要用CDN?

  • 瀏覽器從服務器上下載CSS、js和圖片等文件時都要和服務器鏈接,而大部分服務器的帶寬有限,若是超過限制,網頁就半天反應不過來。而CDN能夠經過不一樣的域名來加載文件,從而使下載文件的併發鏈接數大大增長。瀏覽器

  • jquery一類的庫文件被普遍使用,若是訪問你網站的用戶的瀏覽器以前在訪問別的網站時經過和你相同的CDN已經加載了jquery,因爲該文件已經被緩存了,就不用從新下載了。緩存

  • CDN具備更好的可用性,更低的網絡延遲和丟包率。安全

  • CDN能提供本地的數據中心,這樣一來,那些遠離你網站主服務器的用戶也能就近很快地下載文件。服務器

  • 不少商業付費的CDN能提供使用報告,這能夠做爲你本身網站分析報告的補充。網絡

  • CDN可以分配負載,節省帶寬,提升你網站的性能,下降網站託管的成本,一般是免費的。併發

CDN的不足

  • 在開發階段若是處在斷網環境下,CDN文件是沒法加載的。負載均衡

  • 不夠靈活。好比你只使用jquery庫的一小部分,若是使用CDN上提供的文件就沒辦法進行拆分,仍是得下載原來的大小,反而沒有本身拆分後加載速度來得快。分佈式

  • 儘管一些流行的CDN文件事先緩存過的概率較大,但並非必定的,一些移動設備的緩存可能很小並且效率很低,CDN的優點就不明顯了,特別是當你能夠在本地服務器上存放比CDN文件更小的文件時。性能

  • 因爲地理、法律、政策和商業上的阻隔,你所在的地區可能屏蔽了一些流行的免費CDN服務的域名或者IP地址。

  • CDN會有出故障的時候,這時候要有備用方案,也就是你的本地文件,這種處於穩定考慮的冗餘會增大開發工做量和複雜度。

  • 若是安全性對你的網站很重要,就不要使用公共的CDN,由於當你遠程從CDN請求文件時,你的訪問來源信息也被髮送過去,一些遠程的js文件可能被修改用來蒐集你的用戶或者系統信息,而當你使用https協議時,能選擇的CDN就更加有限。

CDN的主要內容

  • 「分佈式存儲」:CDN也叫內容分發網絡。將中心平臺的內容分發到各地的邊緣服務器,使用戶可以就近獲取所需內容,下降網絡用賽,提升用戶訪問響應速度和命中率。利用了索引、緩存等技術。

  • 「負載均衡」:對全部發送的請求進行訪問調度,肯定提供給用戶的最終實際訪問地址。

  • 「內容管理」:負責對存儲內容的監管、數據分析等。

傳統網站的訪問過程:

  • 用戶在本身的瀏覽器中輸入要訪問的網站域名。

  • 瀏覽器向本地DNS服務器請求對該域名的解析。

  • 本地DNS服務器中若是緩存有這個域名的解析結果,則直接響應用戶的解析請求。

  • 本地DNS服務器中若是沒有關於這個域名的解析結果的緩存,則以遞歸方式向整個DNS系統請求解析,得到應答後將結果反饋給瀏覽器。

  • 瀏覽器獲得域名解析結果,就是該域名相應的服務設備的IP地址。

  • 瀏覽器向服務器請求內容。

  • 服務器將用戶請求內容傳送給瀏覽器。

加入CDN後的訪問過程

  • 當用戶點擊網站頁面上的內容URL,通過本地DNS系統解析,DNS系統會最終將域名的解析權交給CNAME指向的CDN專用DNS服務器

  • CDN的DNS服務器將CDN的全局負載均衡設備IP地址返回用戶。

  • 用戶向CDN的全局負載均衡設備發起內容URL訪問請求。

  • CDN全局負載均衡設備根據用戶IP地址,以及用戶請求的內容URL,選擇一臺用戶所屬區域的區域負載均衡設備,告訴用戶向這臺設備發起請求。

  • 區域負載均衡設備會爲用戶選擇一臺合適的緩存服務器提供服務,選擇的依據包括:根據用戶IP地址,判斷哪一臺服務器距用戶最近;根據用戶所請求的URL中攜帶的內容名稱,判斷哪一臺服務器上有用戶所需內容;查詢各個服務器當前的負載狀況,判斷哪一臺服務器尚有服務能力。基於以上這些條件的綜合分析以後,區域負載均衡設備會向全局負載均衡設備返回一臺緩存服務器的IP地址。

  • 全局負載均衡設備把服務器的IP地址返回給用戶。

  • 用戶向緩存服務器發起請求,緩存服務器響應用戶請求,將用戶所需內容傳送到用戶終端。

CDN的使用方法

能夠在七牛雲、阿里雲等申請存儲空間,將須要存儲的文件上傳,就能夠獲取到文件對應的一個域名。

相關文章
相關標籤/搜索