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

5
大约两三年前,我总结的答案是:

  • 把所有的js文件编译成一个文件并进行缩小。
  • 把所有的css文件编译成一个文件并进行缩小。
  • 异步加载外部脚本。
  • 将缓存控制标头设置为远期。
  • 对无效资产url使用指纹技术。
  • 使用自己的CDN。

现在的应用程序似乎更加重视javascript。同时我也注意到浏览器能够打开更多的并行连接。

在包含静态资源时,目前最佳实践是什么。

当我使用Angular、Backbone或Ember等框架时,是应该将框架与我的应用程序捆绑在一起还是使用公共CDN(如Google的https://developers.google.com/speed/libraries/),只捆绑我的应用程序代码?

1个回答

4
我认为答案是...这要看情况。我明白这并不是很有用,所以我会详细阐述一下。
  • 如果您正在编写一个内部(企业内网)应用程序,将框架捆绑到应用程序中会更好、更高效。然后,您的用户只需要从本地网络获取文件。如果您有多个内部应用程序使用相同的框架,则内部CDN将是一个不错的选择。
  • 如果您的用户不太可能访问使用相同框架的其他应用程序,那么您将无法从CDN中获得任何好处(除非他们在与您的服务器不同的地区),但也没有真正的缺点。
  • 如果您想自动更新库的最新版本(99次中有97次都是坏主意),则可以使用CDN自动提供当前版本。
  • 如果您担心宽带问题,使用CDN可以缓解此问题,因为您的用户将从别人那里下载文件。
  • 如果您的应用程序JS将经常更改,那么如果您将所有JS捆绑在一起,您将迫使重新下载所有框架库。当然,有简单的方法来解决这个问题,比如分别捆绑库。

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


你认为使用公共CDN来使用这些库,与使用CloudFront或CacheFly等服务相比,有哪些优点呢? - errm
文件已经被缓存到流行的缓存中的可能性比我想象的要高得多。 - DoctorMick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接