2012-07-01 50 views
0

一個衆所周知的技術是由於各種原因將資源(CSS,JavaScript,...)與單獨的DNS名稱鏈接起來。就像這樣:在鏈接到HTML鏈接資源的URL中使用IP地址(CSS,...)

GET http://stackoverflow.com/ 
GET http://cdn.sstatic.net/stackoverflow/all.css 

(兩個不同的域名)

相反:

GET ... 
GET http://92.60.242.2/stackoverflow/all.css 

(一個DNS查找)

這意味着兩個DNS查找是必需的。我們不能只使用IP地址而不是cdn.sstatic.net來保存一次DNS查詢嗎?

請從服務器的角度考慮是否可以使用IP主機。假設存在專用資源服務器和專用IP。

+4

你可以做到這一點,如果你想。但是,一次DNS查詢並不昂貴,但使用IP地址的成本可能相當大。你失去了虛擬主機(每個IP有多個站點),DNS負載平衡(每個站點有多個IP),以及當你的IP地址發生變化時(因爲100%的正常運行時間是虛構的),你必須做額外的工作。有更好的方法來縮短加載時間的毫秒數。 –

+1

總的來說,我同意但是要小心DNS查找可能很昂貴 –

回答

4

內容傳送網絡通常採用某種負載平衡,通常在DNS級別實現(例如,根據請求者的地理位置,名稱cdn.sstatic.net解析爲不同的IP地址)。對IP地址進行硬編碼將會適得其反,因爲請求將始終傳送到同一臺服務器(可能仍然是多個後端服務器前的負載均衡器,但它們都將位於同一位置)。

+0

好的,如果沒有涉及外部CDN會怎麼樣?如果您有一個備用服務器,只需將IP添加到您自己的服務器的NIC上即可。 – usr

+0

當然,如果你用這種方式控制服務器,你可以做任何你喜歡的事情。請記住,由於大多數(也可能是全部)瀏覽器都保留了內部DNS緩存,因此您大多節省了每個訪問者提供的_single_ DNS請求的時間。 – lanzz