什么是CDN最佳实践?

时间:2010-04-24 12:44:57

标签: jquery cdn

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

  1. 除了自定义JS代码之外,我还在使用jQuery,jQuery UI和jQuery工具。另外,我的网站是用ASP.Net编写的,这意味着有一些ASP.Net生成的JS代码。
  2. 现在我所做的是我将所有js(包括jquery代码)组合在一起,除了ASP.Net生成的JS到一个文件中。我在Rackspace CDN上主持这个。

    我想知道从谷歌托管的CDN获取jQuery,jQuery UI文件是否更有意义(我怀疑这些文件在提供这些文件方面效果很好,因为它们已经在很多用户的缓存中了) ?

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

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

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

2 个答案:

答案 0 :(得分:7)

加快网站速度的第一种方法是最小化HTTP请求(Best Practices from Yahoo)。因此,如果您已经从CDN提供组合的CSS文件,那么您正在这样做。从谷歌和CDN中提供一些服务会增加请求。

不幸的是,你不能将CSS和JS合并到一个文件中,所以你将会遇到一个CSS和JS的请求。您可能想要验证这些是否已提供给GZIPPED。

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

从单独的域提供文件可能有意义,因为这会增加并行下载的数量。 (Another article from yahoo on this)。如果你的js& css只是两个文件,你可以把它放在一个域上,而你的图像放在另一个域上。

答案 1 :(得分:3)

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

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

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

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