52

为了提高我们网页的性能,我们建议使用CDN.js在我们的网页上提供文件。那讲得通。

此外,我们建议捆绑我们的.js文件,以减少负载时向服务器发出的请求数量。

因此,我们需要坐下来决定是使用 CDN 还是捆绑.js文件。

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

4

4 回答 4

14

为什么不能捆绑它们并将它们放置在 CDN 中?这几乎不应该是一个或另一个的决定?

如果您必须选择其中一个,这取决于.js您包含多少文件。对于少量文件,我建议CDN会更快,而对于更多数量的文件,一堆.js文件肯定会更快。切换的位置是您可以尝试的。

于 2011-09-16T14:05:51.987 回答
12

我的回答:两者都是。捆绑它们并将它们放在 CDN 上。

这样做的缺点?要看。你的构建过程是什么样的?您可以轻松地自动化捆绑和缩小吗?您使用的是 Yahoo YUI 还是 Google Closure 或其他东西?

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

测试也很重要,因为可能会出现缩小怪癖。

底线:5 个 javascript 文件安全地捆绑到 1 个文件中 === 减少了 4 个请求。

一个页面只有普通的旧 Html 和一个外部 javascript 引用 === 2 对您的服务器的请求。但是,一个页面只有普通的旧 Html 和一个 CDN 上的外部 javascript 引用 === 1 对您的服务器的请求。

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

Closure Compiler 会修改您的原始 JavaScript 代码并生成比原始代码更小、更高效但更难阅读和调试的代码。Closure Inspector 通过提供源映射功能来提供帮助,该功能识别与编译代码对应的原始源代码行。

于 2011-09-16T14:14:58.147 回答
1

有几件事你需要考虑...

页面加载初期需要加载多少 JS,延迟到后期可以延迟多少?

如果您可以延迟加载 JS(例如将其放在页面底部)或像 Google Analytics 那样异步加载它,那么您将最大程度地减少下载 JS 所花费的阻塞 UI 线程的时间。

在弄清楚如何拆分 JS 的负载之后,我将处理各种 JS 文件的合并/缩小 - 减少 HTTP 请求是提高性能的关键。

然后考虑转移到 CDN 并确保 CDN 可以提供压缩的 JS 内容并允许您设置标头以便“永久缓存”(如果您永久缓存,则需要对文件进行版本控制)。CDN 有助于减少延迟,但也可以通过无 cookie 来减少大小

您可能要考虑的另一件事是为静态内容设置一个单独的域,在您整理内容时将其指向您的服务器,然后在看起来值得时切换到 CDN。

安迪

于 2011-09-19T19:47:43.320 回答
1

正如其他人已经说过的那样,如果可能的话,答案是两者兼而有之。捆绑(和缩小)为您的用户带来好处,因为它减少了页面重量。CDN 使您的服务器受益,因为您正在卸载工作。一般来说,除非您观察到性能问题或者您没有更好的事情可做,否则您也不需要优化。

于 2011-09-16T14:46:34.093 回答