2

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

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

提前非常感谢!

4

2 回答 2

2

仅仅通过使用子域,您不会获得任何性能优势。专用于资产的子域通常是更大的性能改进策略的一部分。

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

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

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

于 2012-09-13T17:19:23.300 回答
1

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

EDIT: I noticed that nobody noted what CDN (Content Delivery Network) stands for.

于 2012-09-13T17:19:37.847 回答