為什么靜態(tài)資源要放在一個或者若干個獨立的域名之下?我當(dāng)時腦海中首先想到的就是為了動靜分離,減輕web服務(wù)器壓力,但是仔細一想不太對,如果僅是為了這個原因,大可不必啟用那么多一級域名,用若干二級域名不是更好?于是帶著這個疑問,拜訪了搜索引擎。果然不出所料,原因不止這一個,現(xiàn)整理出來,作為備忘。
查看了淘寶的官網(wǎng)


1、啟用新的一級域名,每次請求瀏覽器不會攜帶cookie。這對于cookie內(nèi)容比較大,并且流量大的網(wǎng)站會省去不少寬帶費用。同時這也解惑了為什么不用二三級域名。
2、動靜分離。靜態(tài)資源與動態(tài)內(nèi)容分離,有利于部署于CDN。
3、HTTP協(xié)議對同一個域名的同時下載線程數(shù)有限制。主要是為了優(yōu)化下載速度,防止同一域名下下載線程數(shù)過多,導(dǎo)致下載速度變慢。各個瀏覽器都會遵守這個規(guī)定,但是限制的數(shù)目可能不一致?;谶@個原因,可將資源部署于不同的域名,以達到最大化并發(fā)下載。(重點)
瀏覽器的并發(fā)請求數(shù)目限制是針對同一域名的。
意即,同一時間針對同一域名下的請求有一定數(shù)量限制。超過限制數(shù)目的請求會被阻塞,這就是為什么會有zhimg.com, http://twimg.com 之類域名的原因。
(這是其中一個原因,另一個主要原因是,向 http://zhihu.com 請求資源會把 http://zhihu.com 下本地的所有 cookie 發(fā)送過去,這是請求圖片,js等資源不需要的,會造成很大的浪費,詳情見http://webmasters.stackexchange.com/questions/26753/why-do-big-sites-host-their-images-css-on-external-domains)

如圖,有的請求會持續(xù)很長時間,如果把 img, css, js... 都放到 http://zhihu.com 一個域名下面,其他請求就遲遲無法完成,瀏覽者看來就是『卡住了』。而把圖片放到 http://zhimg.com 之后,css和圖片就可以并發(fā)請求了。
具體不同瀏覽器這個限制的數(shù)目

4、靜態(tài)資源獨立部署,為全局產(chǎn)品服務(wù)。這屬于業(yè)務(wù)劃分的范疇了。比如taobao.com和tmll.com都會用到tbcdn.cn上的靜態(tài)資源,這些資源不必從屬于某個產(chǎn)品。
5、接第4點原因,有利于最大化利用客戶端緩存。比如訪問taobao.com,緩存了tbcdn.cn上的某個js文件,之后再訪問tmll.com時,也用到此js文件,不必再從tbcdn.cn上下載,直接用客戶端緩存即可。
最后,這樣做的同時,就已經(jīng)減輕了每臺服務(wù)器的壓力,服務(wù)器越多,每個服務(wù)器壓力就越小。當(dāng)然,這需要一個平衡。
參考文獻:
http://blog.csdn.net/u010552788/article/details/51056554
https://www.zhihu.com/question/20474326