【问题标题】:Is it faster to bundle jquery w/ one's scripts or to use a public cdn?将 jquery 与一个脚本捆绑或使用公共 cdn 是否更快?
【发布时间】:2013-10-04 06:45:07
【问题描述】:

我在 Cloudfront 上托管我的网站的 javascript。我应该将 jQuery 与包捆绑在一起,还是使用公共 CDN?我主要对移动性能感兴趣。

捆绑的优点是要下载的脚本文件更少。公共 CDN 的优点在于它更有可能已经在用户的缓存中。

听起来似乎选择缓存中可能性的 CDN 是 Google 的(基于此处的研究:http://royal.pingdom.com/2012/06/20/jquery-numbers/),但实际上这是否比少一个文件更重要?当你考虑到使用 jQuery 的网站的百分比 (~50%) * 使用 Google 的 CDN 的百分比 (25%) * 使用 jQuery 1.10.2 的网站的百分比 (??%) 时,是一个重要的部分的访问者会缓存它吗?

【问题讨论】:

  • CDN 还有其他好处,但捆绑的好处之一是减少了依赖性。我已经让谷歌的托管变得不可用。我不认为我还没有经历过亚马逊 s3 cdn 停电,但这是可能的。您是否尝试过对此进行基准测试以查看 cdn 托管 jquery 的性能差异?
  • 尽你所能控制。如果您的站点位于可以在没有 Internet 的情况下运行的 Intranet 中,那么它仍然可以工作。如果你从外面拿它就不会了。
  • 我也想知道这个。控制很好,但实际上,当这些大玩家从缓存中提取库时,大多数新访问者的加载时间会下降多少。

标签: jquery performance cdn google-cdn


【解决方案1】:

Google Chrome V8 开发人员在 this blog post 中提出,不建议使用捆绑。

推荐的解决方案是使用公共 CDN 中的开源库并单独提供其他文件。

由于您担心移动性能,我建议您:

  1. 对开源资源使用开源 CDN。
  2. 使用更好的压缩,因为移动网络通常受到带宽限制。小文件意味着更快的下载速度。
  3. 有效地使用 HTTP/2 多路复用。
  4. 尽可能使用 HTTP/2 服务器推送。

PageCDN 为您完成所有这些工作。它可以通过单个连接来复用公共库和私有文件。此外,它使用 brotli-11 压缩来压缩资源,从而更紧密地压缩文件。它还支持不可变缓存和 HTTP/2 服务器推送。

【讨论】: