在子域中存储客户端文件(img,css,javascript)有什么好处?

时间:2012-09-13 17:07:32

标签: subdomain client-side

我注意到所有高流量网站都将其客户端文件(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

如果我使用子域存储它们,性能会有什么好处吗? (考虑到我的网站没有那么多客户端文件)

提前非常感谢!

2 个答案:

答案 0 :(得分:2)

仅使用子域名,您无法获得任何性能优势。专用于资产的子域通常是更大的,提高绩效的战略的一部分。

例如:子域实际上可能指向与主网站不同的服务器,除了处理静态图像请求之外什么都不做。它甚至可以使用不同的服务器软件(比如NGINX或lighttpd),其开销比传统的apache设置要少。

子域名通常也指向像Akamai或Amazon CloudFront这样的CDN。 CDN是在世界不同地区拥有数据中心的公司。当您从地理位置更靠近收件人的计算机上提供静态文件时,可以大大减少文件到达它们所需的时间。

有时会设置一个完全不同的域来处理静态请求,比如facebook。这也是facebook域名中包含字母CDN的原因......因为它就是这样!

答案 1 :(得分:1)

子域本身没有任何好处。但是,在子域上允许DNS系统使用CDN样式缓存将您的请求发送到不同的服务器 - 甚至是完全不同的服务器集(如Gunner所提到的)。托管静态内容有许多快速简便的方法,可以减轻动态内容服务器的负担。

编辑:我注意到没有人注意到CDN(内容分发网络)代表什么。