捆绑.js文件与CDN

为了提高我们的网页的性能,我们build议使用CDN在我们的网页上提供.js文件。 这就说得通了。

另外,我们build议将我们的.js文件捆绑在一起,以减less加载到服务器的请求数量。

所以,如果我们使用CDN或捆绑的.js文件,我们需要坐下来做出决定。

优缺点都有什么? 哪些更有意义?

你为什么不能捆绑它们把它们放在CDN上? 它应该不是一个或另一个的决定?

如果您必须select其中之一,则取决于您包含的.js文件的数量。 对于less量的文件,我build议一个CDN会更快一些,对于更多的文件, .js文件肯定会更快。 切换的地方,你可以尝试一下。

我的回答是: 都是 。 将它们捆绑在一起放在CDN上。

这样做的缺点? 依靠。 你build立的stream程是什么样的? 你可以轻松自动化捆绑和缩小? 你使用雅虎YUI或谷歌closures还是别的什么?

而且,如果有很多依赖于GUI的jQuery,由于元素/效果/ css的不断变化,可能会有一些耗时的摩擦。

testing也是重要的,因为可能的缩小怪癖。

底线:5个JavaScript文件安全地捆绑成1个文件=== 4个请求less。

只有普通的旧HTML和一个外部JavaScript引用=== 2请求到您的服务器的页面。 然而,只有普通的旧HTML和一个外部JavaScript引用CDN === 1请求到您的服务器的页面。

目前我们正在使用Google Closure工具。 Google Closure Inspector可以帮助您:

Closure编译器会修改原始JavaScript代码,并生成比原始代码更小,更高效的代码,但难于读取和debugging。 Closure Inspector通过提供一个源代码映射function来提供帮助,该function标识了与编译代码相对应的原始源代码行。

正如其他人已经指出,如果可能的话,答案是两个。 捆绑(和缩小)给您的用户带来好处,因为它减less了页面的重量。 CDN有利于您的服务器,因为您正在卸载工作。 一般来说,除非您观察到性能问题,否则您无需进行优化,也不需要做任何事情。

有几件事你需要考虑…

你需要在页面加载的时候提前加载多lessJS,以及多less时间才能延迟?

如果您可以延迟加载JS(例如,将其放在页面的底部)或像Google Analytics一样asynchronous加载,那么您将最小化下载阻止UI线程的JS花费的时间。

在研究JS的负载如何分解之后,我会处理各种JS文件的合并/缩小 – 减lessHTTP请求是提高性能的关键。

然后看看移动到CDN,并确保CDN可以提供压缩的JS内容,并允许您设置标题,以便“永久caching”(如果您永远caching,则需要对文件进行版本化)。 CDN有助于减less延迟,但也可以通过无cookie的方式减小尺寸

您可能要考虑的其他事情是为静态内容设置一个单独的域,将其指向您的服务器(s),然后将其分配给CDN(如果它看起来有价值)。

安迪