延迟加载vs组合/缩小与CDN Javascript(AngularJS)

时间:2015-01-07 07:30:10

标签: javascript jquery angularjs

当您想使用CDN加载javascript文件时有哪些方案?您可能想要延迟加载哪些文件。或者也许哪些脚本是最佳候选组合和缩小?

例如:

  

jquery + jquery插件       - 如果通过CDN或更好的方式访问它们,将它们组合/缩小为一个可访问的        只需一个请求

     

angularjs模块       - 根据需要延迟加载模块是否更好,或者只是将它们全部组合/缩小        部署所以所有模块实际上都可以随时用于应用程序

让我知道你的想法

2 个答案:

答案 0 :(得分:3)

你会发现意见分歧。有些人喜欢将所有js文件合并到一个文件中,并在需要特定javascript模块时加载一些文件。我更喜欢将所有这些组合在一个signle文件中。

CDN场景完全不同。它对并行加载很有用。浏览器可以从服务器并行加载少量请求,因此如果您在CDN上托管css和js文件,浏览器可以将它们与HTML和其他文件并行加载,那么它会更好。

答案 1 :(得分:3)

这个问题有点主观,但这是我的观点。

CDN很棒,因为:

  1. 随着内容缓存在全球范围内,提供更好的性能。这将意味着从各种位置访问的站点的延迟更低
  2. 脚本将被缓存,因此,如果我访问一个使用google cdn上最新的稳定Angular的网站,然后访问另一个网站,那么只执行一个请求。使用cdns的站点越多,脚本缓存的可能性就越大,因此应尽可能使用它们
  3. 减少服务器负载,从而降低成本。这对于获得大量流量的网站尤其重要,并且当您为所使用的内容付费时,云网站也是如此。我会说对于云来说,必须使用cdns
  4. 由于浏览器一次限制每个域的请求数量,cdns会增加对内容的并发请求数
  5. CDN的问题:

    1. 对于每个脚本,需要单独的请求(除非缓存),这样可以增加对您网站的请求总数
    2. Cdn可能会出现故障或性能问题导致您的网站出现问题。如果使用cdn,请确保在cdn失败的情况下对本地版本进行故障恢复,例如for Angular check window.angular
    3. 结合非常棒,因为:

      1. 减少了请求数量。这在移动设备上很重要,因为移动连接具有高延迟。它也很重要,因为浏览器每个域只能执行固定数量的请求。这也将减少服务器的负载,因为处理的请求较少
      2. 简而言之,如果可以使用常用脚本(例如angular,jquery等),请使用cdns,然后对自己的自定义脚本使用组合和缩小。您应该尝试只针对自己的脚本提出一个请求。

        如果您有大量的JavaScript,那么您应该考虑延迟加载脚本以减少网站的初始加载时间。