日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转)CDN是如何工作的?

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)CDN是如何工作的? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:CDN是如何工作的?

CDN是互聯網中使用較頻繁的一種技術。你也許常聽人說:“我們的網站使用了CDN技術”,但可能他們對CDN的了解并不多,也許只局限于--用了以后網站訪問速度會變快。

其實,CDN的原理非常簡單。當瀏覽器請求一資源時,第一步是做DNS解析,DNS解析就像是從通訊錄根據姓名找號碼,瀏覽器發送域名,然后得到DNS服務器返回的IP地址。瀏覽器通過IP地址和服務器連接并獲取資源(DNS服務器會有很多層的緩存,但超出本文范圍)。

對于小站點或個人博客,一個域名對應一個IP地址,而大站點可能含多個IP地址。

當請求一個資源時(如網站),距離會影響連接速度,所以從國內訪問國外的網站比較慢。因此,一些大公司在世界各地配置服務器并同步數據,這就叫CDN,而那些離當地用戶最近的服務器叫“邊緣服務器(edge servers)”。

DNS解析

當瀏覽器通過CDN做域名解析請求時,針對單IP的網站會有一些不同。DNS服務器會找出最適合的服務器來處理請求,而且非常簡單,DNS會找出離請求地點最近的邊緣服務器。如下圖所示,如果我從維吉尼亞州發送一個指向美國中部服務器的請求,就會得到位于東海岸的邊緣服務器地址,如果我從加利福尼亞州發送請求,就會得到位于西海岸的邊緣服務器地址。

也就是說處理請求的第一步:找出離請求位置最近的服務器。有些公司可能會用其他的方式優化CDN服務器,例如,如果最近的服務器滿負荷運作,那么接下來的請求就會轉到其他閑置的服務器。總之,CDN總會找出最適合的服務器來處理請求。

獲取內容

邊緣服務器是一種代理緩存,類似瀏覽器緩存。當請求到達邊緣服務器,它會首先檢查內容是否是最新的。緩存標識(key)就是整個Url地址(跟瀏覽器一樣),如果內容已被緩存且沒有過期,就直接返回緩存內容。

如果沒有緩存或已過期,邊緣服務器會向源服務器發送請求獲取內容,并緩存起來。

雅虎創建了一個開源項目叫Apache Traffic Server,用來管理CDN直接的交互,如果想了解更多代理緩存的原理,推薦你讀一下這個項目的文檔。

示例

雅虎的CDN服務中,使用一個工具叫“組合處理器(combo handler)”,它會把多個文件的請求整合到一起,變成一個請求-響應操作。下面是例子:

http://yui.yahooapis.com/combo?3.4.1/build/yui-base/yui-base-min.js&3.4.1/build/array-extras/array-extras-min.js

域名yui.yahooapis.com是雅虎CDN服務的一部分,會把你的請求轉給離你最近的邊緣服務器,這個請求包含兩個文件yui-base-min.js和array-extras-min.js,但只需一次響應便可完成。這些邏輯處理操作不在邊緣服務器,只能在源服務器上。

靜態指的是什么?

每當我描述類似上文的“組合處理器”之類的系統時,經常會看到別人困惑的表情。CDN有時候容易跟FTP資源混淆,因為它們都是上傳靜態資源供其他人獲取。我希望我上文的描述能讓大家搞清楚兩者不一回事。邊緣服務器是一個代理,源服務器告訴邊緣服務器返回什么內容,源服務器可能是Java,Ruby,Node.js,.Net等,因此可以實現任何邏輯。邊緣服務器什么也不做只是發生請求并返回內容。

既然CDN如此高效,為什么不把網站所有東西都用CDN來提高性能?CDN本質是緩存,如果保存的是動態頁面,每次頁面內容都會有所變化,那么每次請求都要和源服務器交互一次,那么這個緩存也就沒有意義。

這也是為什么Javascript,CSS,images,Flash,音頻,視頻等文件特別適合使用CDN技術,因為這些文件是不變的,所有的用戶獲取的都一樣,一旦通過CDN緩存,所有用戶都受益。

緩存過期

雅虎性能指南規定靜態資源應該要有緩存過期標識保存在Http協議的header中,這么做有兩個原因:第一,瀏覽器會把資源緩存一段時間,第二,CDN會將資源緩存一段時間。這就意味著你不能使用重復的文件名,因為他們至少會被緩存在兩個地方,用戶可能會一直獲取不到最新版本的文件。

有幾種方式解決這個問題,YUI 庫用包含不同版本庫的目錄來區分。通常也可以在文件名末尾加入標識符,如MD5的哈希值或者版本控制軟件的修訂號。任何一種繼續都為了確保,當用戶的請求包含過期標識的時候,依然能獲得最新版本的文件。

結語

CDN技術已經是當今互聯網重要的一部分,隨著時間的推移,它只會變得越來越重要。即便是現在,一些公司仍然努力嘗試把更多的功能移到邊緣服務器,以便能給用戶更快速的體驗。這里包含了一種技術叫Edge Side Includes (ESI),用來緩存頁面的部分內容。

更好的理解CDN技術及工作原理是提升CDN性能的關鍵。

?

原文:http://www.nczonline.net/blog/2011/11/29/how-content-delivery-networks-cdns-work/

注:這是我第一次翻譯英文文章,花了比想象中要多的時間,如果看完文章對你有幫助是我最大的欣慰,不足的地方歡迎批評指出。

謝謝瀏覽!

轉載于:https://www.cnblogs.com/Music/archive/2012/03/12/cdn-how-to-work.html

總結

以上是生活随笔為你收集整理的(转)CDN是如何工作的?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。