我最近开始使用Rackspace Cloudfiles CDN(Limelight),我对此有一些疑问:
现在我所做的是我将所有js(包括jquery代码)组合在一起,除了ASP.Net生成的JS到一个文件中。我在Rackspace CDN上主持这个。
我想知道从谷歌托管的CDN获取jQuery,jQuery UI文件是否更有意义(我怀疑这些文件在提供这些文件方面效果很好,因为它们已经在很多用户的缓存中了) ?
这意味着一个额外的HTTP请求,所以我不确定它是否会有所帮助。
现在我的资产有多个容器。例如,在Rackspace中我有3个容器:JS,CSS和Images。所有3的URL子域都不同。这会导致性能下降吗?我应该只使用一个容器(因此CDN使用一个域)吗?
有没有办法让MS ASP.Net生成的JS从MS CDN加载?根据上述问题,这会对性能造成影响吗?
答案 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代码可能会变得棘手。