我应该将 javascript 框架与我的应用程序捆绑在一起还是使用 public CDN?
Should I bundle a javascript framework with my application or use a public CDN?
大约两三年前,我会把这个问题的答案总结为。
- 将所有js编译成一个文件并缩小。
- 将所有 css 编译成一个文件并缩小。
- 异步加载外部脚本。
- 将缓存控制 headers 设置到遥远的未来。
- 用于失效的指纹资产 url。
- 使用您自己的 CDN。
现在 javascript 上的应用程序似乎要重得多。而且我看到了浏览器能够打开更多并行连接的证据。
当前在包含静态资产时网络性能的最佳实践是什么。
当我使用像 angular、backbone 或 ember 这样的框架时,我应该将框架与我的应用程序捆绑在一起还是使用 public cdn(如 googles https://developers.google.com/speed/libraries/) 并捆绑我的应用程序代码?
我会说答案是......这取决于。我知道这不是很有用,所以我会扩展。
- 如果您正在编写内部(内联网)应用程序,那么将框架捆绑到您的应用程序中会更好、更高效。然后您的用户将只需要从本地网络中提取文件。如果您有多个使用相同框架的内部应用程序,那么内部 CDN 将是一个不错的选择。
- 如果您的用户不太可能访问使用相同框架的其他应用程序,那么您将无法从 CDN 中获得任何好处(除非他们与您的服务器位于世界不同的地方)但是没有也有真正的缺点。
- 如果你想自动更新到最新版本的库(100 次中有 99 次这是一个坏主意)你可以使用 CDN 自动提供当前版本。
- 如果您有带宽问题,使用 CDN 可以缓解这种情况,因为您的用户将从其他人那里下载文件。
- 如果您的应用程序 js 会经常更改,那么如果您将所有 js 捆绑在一起,您将强制重新下载所有框架库。显然,有一些简单的方法可以解决这个问题,例如单独捆绑库。
对于外部应用程序,我认为使用 CDN 是正确的选择。
大约两三年前,我会把这个问题的答案总结为。
- 将所有js编译成一个文件并缩小。
- 将所有 css 编译成一个文件并缩小。
- 异步加载外部脚本。
- 将缓存控制 headers 设置到遥远的未来。
- 用于失效的指纹资产 url。
- 使用您自己的 CDN。
现在 javascript 上的应用程序似乎要重得多。而且我看到了浏览器能够打开更多并行连接的证据。
当前在包含静态资产时网络性能的最佳实践是什么。
当我使用像 angular、backbone 或 ember 这样的框架时,我应该将框架与我的应用程序捆绑在一起还是使用 public cdn(如 googles https://developers.google.com/speed/libraries/) 并捆绑我的应用程序代码?
我会说答案是......这取决于。我知道这不是很有用,所以我会扩展。
- 如果您正在编写内部(内联网)应用程序,那么将框架捆绑到您的应用程序中会更好、更高效。然后您的用户将只需要从本地网络中提取文件。如果您有多个使用相同框架的内部应用程序,那么内部 CDN 将是一个不错的选择。
- 如果您的用户不太可能访问使用相同框架的其他应用程序,那么您将无法从 CDN 中获得任何好处(除非他们与您的服务器位于世界不同的地方)但是没有也有真正的缺点。
- 如果你想自动更新到最新版本的库(100 次中有 99 次这是一个坏主意)你可以使用 CDN 自动提供当前版本。
- 如果您有带宽问题,使用 CDN 可以缓解这种情况,因为您的用户将从其他人那里下载文件。
- 如果您的应用程序 js 会经常更改,那么如果您将所有 js 捆绑在一起,您将强制重新下载所有框架库。显然,有一些简单的方法可以解决这个问题,例如单独捆绑库。
对于外部应用程序,我认为使用 CDN 是正确的选择。