我应该将第三方JavaScript库嵌入优化后的JavaScript构建文件中吗?

3

我正在使用出色的requirejs优化器来压缩Web应用程序的代码。

该应用程序使用了许多第三方库。我有几个选项:

  • 让用户从我的服务器单独下载所有第三方库
  • 如果可用,让用户从CDN下载所有第三方库
  • 使用requirejs生成所有这些库的“压缩”版本,放在一个文件中

现在,我知道缓存和/或CDN会帮助提高获取每个单独库所需时间的效率,但是如果我有15个库,我仍然最终会有15个HTTP请求;如果实际应用程序的代码最终只被分发在一两个相对较小的文件中,则这更加令人恼火。

那么每种方法的利弊是什么?此外,如果我将它们捆绑在我的应用程序内部(而不是指向CDN),我想我实际上会“重新分发”(在常见FOOS许可证的意义上)这些库吗?

欢迎分享任何经验/想法。

谢谢。


如果您正在使用CDN,那么希望用户已经缓存了其中一些相同的库,因此请求次数会少于15次。 - voithos
这将取决于CDN如何配置缓存(如果设置了“must-revalidate”,那么这是一个额外的请求,尽管非常快,对吧?)此外,这并不能帮助缓存为空的可怜用户(我不禁感到害怕...) - phtrivier
1个回答

0
你可以看一下为什么我应该使用Google的CDN来加载jQuery?这个问题,为什么CDN是更好的解决方案。
它增加了可用的并行性。(大多数浏览器每次只会从任何给定站点下载3或4个文件。)
它增加了缓存命中的机会。(随着更多的站点采用这种做法,更多的用户已经准备好了文件。)
它确保有效载荷尽可能小。(Google可以使用各种格式(如GZIP或DEFLATE)预压缩文件。这使得下载时间非常短,因为它是超级压缩的,而且不需要即时压缩。)
它减少了服务器使用的带宽。(Google基本上提供免费带宽。)
它确保用户获得地理位置接近的响应。(Google在全球范围内拥有服务器,进一步降低了延迟。)
(可选)他们将自动更新您的脚本。(如果您喜欢“飞行”,您始终可以使用他们提供的任何脚本的最新版本。这些可能修复安全漏洞,但通常只会破坏您的东西。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接