【问题标题】:Should I embed third-party javascript libraries in optimized javascript build?我应该在优化的 javascript 构建中嵌入第三方 javascript 库吗?
【发布时间】:2012-08-24 23:46:12
【问题描述】:

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

该应用程序使用了大量第三方库。我有几个选择:

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

现在,我知道缓存和/或 CDN 将有助于获取每个单独的库需要多长时间,但是如果我有 15 个库,我仍然会收到 15 个 http 请求;如果我的应用程序的实际代码最终被放在一个或两个相对较小的文件中,那就更烦人了。

那么每种方法的优缺点是什么?另外,我想如果我要将库捆绑到我的应用程序中(而不是指向 CDN?),我实际上会“重新分发”(在普通 FOOS 许可证的意义上)。

欢迎任何经验/想法。

谢谢。

【问题讨论】:

  • 好吧,如果您使用的是 CDN,那么希望用户已经缓存了一些相同的库,所以希望它不是 15 个请求,而是d 会更少。
  • 这取决于CDN如何配置缓存(如果设置了'must-revalidate',那么这是一个额外的请求,虽然非常快,对吧?)此外,这对穷人没有帮助缓存为空的用户(我不禁害怕......)

标签: javascript requirejs


【解决方案1】:

您可以查看Why should I use Google's CDN for jQuery? 问题,为什么 CDN 是更好的解决方案。

它增加了可用的并行度。 (大多数浏览器只会 从任何给定站点一次下载 3 或 4 个文件。)

它增加了缓存命中的机会。 (随着更多网站 遵循这种做法,更多的用户已经准备好文件。)

它确保负载尽可能小。 (谷歌可以 以多种格式(如 GZIP 或 放气)。这使得下载时间非常短,因为它是 超级压缩,它不是即时压缩的。)

它减少了服务器使用的带宽量。 (谷歌是 基本上提供免费带宽。)

它确保用户将获得地理上接近的响应。 (谷歌在世界各地都有服务器,进一步减少了 延迟。)

(可选)它们会自动使您的脚本保持最新。 (如果 你喜欢“坐飞机”,你可以随时使用 他们提供的任何脚本的最新版本。这些可以解决安全问题 漏洞,但通常只会破坏你的东西。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    相关资源
    最近更新 更多