【问题标题】:Should I bundle a javascript framework with my application or use a public CDN?我应该将 javascript 框架与我的应用程序捆绑在一起还是使用公共 CDN?
【发布时间】:2015-03-29 18:50:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 您是否认为将公共 cdns 之一用于这些库而不是 cloud-front 或 cache-fly 之类的东西有什么优点
    • 我认为已经从流行的罐子中缓存的文件的可能引擎盖要高得多。
    最近更新 更多