10

我最近开始使用 Rackspace Cloudfiles CDN (Limelight),对此我有一些疑问:

  1. 除了自定义 JS 代码之外,我还在使用 jQuery、jQuery UI 和 jQuery 工具。另外,我的网站是用 ASP.Net 编写的,这意味着有一些 ASP.Net 生成的 JS 代码。

现在我所做的是将所有的 js(包括 jquery 代码),除了 ASP.Net 生成的 JS 合并到一个文件中。我在 Rackspace CDN 上托管这个。

我想知道从 Google 托管的 CDN 获取 jQuery、jQuery UI 文件是否更有意义(我怀疑它们在提供这些文件时会很好地工作,因为它们已经在许多用户的缓存中)?

这将意味着一个额外的 HTTP 请求,所以我不确定它是否会有所帮助。

  1. 现在我有多个容器来存放我的资产。例如,在 Rackspace 中,我有 3 个容器:JS、CSS 和图像。所有 3 个的 URL 子域都不同。这会导致性能损失吗?我应该只使用一个容器(因此 CDN 使用一个域)吗?

  2. 有没有办法让 MS ASP.Net 生成的 JS 从 MS CDN 加载?根据上述问题,这会影响性能吗?

4

2 回答 2

7

加快网站速度的#1 方法是最小化 HTTP 请求(来自 Yahoo 的最佳实践)。因此,如果您已经从 CDN 提供组合的 CSS 文件,那么您正在这样做。从谷歌提供一些服务,从您的 CDN 提供一些服务会增加请求。

不幸的是,您不能将 CSS 和 JS 合并到一个文件中,因此您将被困在对 CSS 和 JS 的每个请求中。您可能想要验证这些是否已通过 GZIPPED 提供。

就您的图像而言,加快速度的最佳方法是尽可能使用图像精灵。

提供来自不同域的文件可能确实有意义,因为这会增加并行下载的数量。(来自雅虎的另一篇关于此的文章)。如果您的 js 和 css 只是两个文件,您可以将其放在一个域中,而将图像放在另一个域中。

于 2010-04-24T13:01:04.140 回答
3

将您的资产放在不同的域上肯定会更好。

浏览器从单个主机逐个或按顺序加载 Web 资产。他们不会开始请求和下载下一个资产,直到他们完成了来自同一域的上一个资产。因此,将主机或域加倍可以将下载速度提高约 100%,因为浏览器可以同时从 2 个不同的域下载内容。

如果在您的网站上启用了 cookie 或会话,浏览器将在每次向域发出请求时发送会话 cookie,这无用,因为它是静态内容 - 服务器根本不需要 cookie 来提供静态服务图片等内容。这不仅是对带宽的浪费,也是对通信时间的浪费。为避免这种情况,请提供来自未启用 cookie 的域的所有静态内容。

相反,让 JS 在更新维护的网站上提供 JS 代码可能会变得棘手,因为您失去了首先针对新框架测试当前 JS 的机会。

于 2010-04-24T13:02:38.620 回答