2012-09-13 17 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(内容交付网络)代表什么。

相关问题