【问题标题】:What are the benefits of storing client-side files (img, css, javascript) in subdomain?在子域中存储客户端文件(img、css、javascript)有什么好处?
【发布时间】:2012-09-14 01:19:37
【问题描述】:

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

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

提前非常感谢!

【问题讨论】:

  • 通常这样做是为了利用 CDN 样式缓存机制。通过将所有静态文件放在一个位置、一台服务器上、使用一种托管策略,可以更轻松地管理 javascript、图像等静态文件。

标签: subdomain client-side


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-31
      • 2021-12-03
      • 1970-01-01
      • 2011-04-25
      • 2013-12-31
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 2013-03-30
      相关资源
      最近更新 更多