我应该将 javascript 框架与我的应用程序捆绑在一起还是使用 public CDN?

Should I bundle a javascript framework with my application or use a public CDN?

大约两三年前,我会把这个问题的答案总结为。

现在 javascript 上的应用程序似乎要重得多。而且我看到了浏览器能够打开更多并行连接的证据。

当前在包含静态资产时网络性能的最佳实践是什么。

当我使用像 angular、backbone 或 ember 这样的框架时,我应该将框架与我的应用程序捆绑在一起还是使用 public cdn(如 googles https://developers.google.com/speed/libraries/) 并捆绑我的应用程序代码?

我会说答案是......这取决于。我知道这不是很有用,所以我会扩展。

  • 如果您正在编写内部(内联网)应用程序,那么将框架捆绑到您的应用程序中会更好、更高效。然后您的用户将只需要从本地网络中提取文件。如果您有多个使用相同框架的内部应用程序,那么内部 CDN 将是一个不错的选择。
  • 如果您的用户不太可能访问使用相同框架的其他应用程序,那么您将无法从 CDN 中获得任何好处(除非他们与您的服务器位于世界不同的地方)但是没有也有真正的缺点。
  • 如果你想自动更新到最新版本的库(100 次中有 99 次这是一个坏主意)你可以使用 CDN 自动提供当前版本。
  • 如果您有带宽问题,使用 CDN 可以缓解这种情况,因为您的用户将从其他人那里下载文件。
  • 如果您的应用程序 js 会经常更改,那么如果您将所有 js 捆绑在一起,您将强制重新下载所有框架库。显然,有一些简单的方法可以解决这个问题,例如单独捆绑库。

对于外部应用程序,我认为使用 CDN 是正确的选择。