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

时间:2015-01-30 10:06:53

标签: javascript caching browser-cache performance-testing cdn

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

  • 将所有js编译为一个文件并缩小。
  • 将所有css编译成一个文件并缩小。
  • 加载外部脚本async。
  • 将缓存控制标头设置为遥远的未来。
  • 指纹资产网址失效。
  • 使用您自己的CDN。

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

当包含静态资产时,目前网络性能的最佳做法。

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

1 个答案:

答案 0 :(得分:4)

我会说答案是......这取决于。我很欣赏它不是非常有用所以我会扩展。

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

对于外部应用,我说使用CDN是正确的选择。