2012-09-13 45 views
2

我注意到,所有的高流量網站都將其客戶端文件(img,css,javascript等)存儲在子域或獨立域中。在子域中存儲客戶端文件(img,css,javascript)有什麼好處?

例如,的tumblr使用這樣的子域,

<script type="text/javascript" language="javascript" src="https://secure.assets.tumblr.com/javascript/prototype_and_effects.js?024ec5b06b4396bc5c84d8624"></script> 

Facebook的使用名爲fbcdn.net來存儲他們的css文件單獨的域,

<link rel="stylesheet" href="https://s-static.ak.fbcdn.net/rsrc.php/v2/y1/r/WWO883Qmw.css" /> 

的Twitter也使用名爲twimg.com

一個單獨的域
<link rel="stylesheet" href="https://si0.twimg.com/a/1347423426/t1/css/t1_core.bundle.css" type="text/css" media="screen" /> 

我確定他們這樣做因爲在性能上有好處。 具體有哪些好處?

此外,我正在建立一個網站,人們可以登錄和註銷。每個頁面都有幾個圖像,3到4個CSS文件和3到4個JavaScript文件。目前,我使用主域來存儲這樣的客戶端文件,www.example.com/css/mypage.css

如果我使用子域來存儲它們,是否會在性能上有任何好處? (考慮到我的網站沒有那麼多客戶端文件)

非常感謝!

+1

通常這是爲了利用CDN風格的緩存機制。通過將所有靜態文件放在一個地方,在一臺服務器上,使用一種託管策略,可以更輕鬆地管理JavaScript,圖像等靜態文件。 – GunnerL3510

回答

2

簡單地通過使用子域,您不會獲得任何性能優勢。專用於資產的子域通常是更大的改進性能策略的一部分。

例如:子域可能實際上指向的是與主網站不同的服務器,除了處理對靜態圖像的請求外,什麼都不做。它甚至可能使用不同的服務器軟件(比如說NGINX或lighttpd),其開銷比傳統的apache設置要低。

子域通常也指向像Akamai或Amazon CloudFront這樣的CDN。 CDN是在世界各地擁有數據中心的公司。當您從地理上接近收件人的計算機提供靜態文件時,可以大大減少文件到達它們的時間。

有時,一個完全不同的域被設置爲處理靜態請求,如Facebook。這也是爲什麼facebook域名中包含字母CDN的原因......因爲這就是它的原因!

1

該子域本身沒有任何好處。但是,在子域上允許DNS系統使用CDN風格緩存將您的請求發送到不同的服務器 - 甚至是完全不同的服務器組(如Gunner提到的)。有很多快速簡單的託管靜態內容的方法,並且可以減輕動態內容服務器的負擔。

編輯:我注意到,沒有人注意到CDN(內容交付網絡)代表什麼。

相關問題