延迟加载 vs Combine/Minify vs CDN Javascript (AngularJS)

Lazy Load vs Combine/Minify vs CDN Javascript (AngularJS)

使用CDN加载javascript文件的场景有哪些?以及您可能想要延迟加载哪些文件。或者哪些脚本最适合合并和缩小?

例如:

jquery + jquery plugins - should these be accessed via CDN or better to combine/minify them as one to be accessed by just one request

angularjs modules - is it better to lazy load modules as needed or just combine/minify them all at once upon deployment so all modules are actually available to the application at any time

让我知道你对此的看法

你会发现不同意见.. 有些人喜欢将所有 js 文件组合在一个文件中,并在需要 javascript 的特定模块时加载一些文件。我更喜欢将它们全部合并到一个文件中。

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

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

CDN 很棒,因为:

  1. 提供更好的性能,因为内容缓存在世界各地。这将意味着从广泛位置访问的网站延迟更低
  2. 脚本将被缓存,因此如果我访问一个使用 google cdn 上最新稳定 Angular 的站点,然后访问另一个使用相同的站点,则只执行一个请求。使用 cdns 的站点越多,脚本被缓存的可能性就越高,因此应尽可能使用它们
  3. 减少服务器的负载,从而降低成本。这对于获得大量流量的网站以及云托管网站尤其重要,因为您需要为使用的内容付费。我会说对于云来说,必须使用 cdns
  4. 由于浏览器对每个域一次请求的数量有限制,cdns 会增加对内容的并发请求量

CDN 的问题:

  1. 对于每个脚本,需要发出一个单独的请求(除非缓存),因此这会增加您站点的请求总量
  2. Cdn 可能会出现故障或遇到性能问题,这可能会导致您的网站出现故障。如果使用 cdn,请确保在 cdn 失败时可以故障回复到本地版本,例如对于 Angular 检查 window.angular

结合很棒,因为:

  1. 它减少了请求量。这在移动设备上很重要,因为移动连接具有高延迟。这也很重要,因为浏览器只能为每个域执行固定数量的请求。这也将减少服务器的负载,因为要处理的请求较少

简而言之,尽可能对 angular、jquery 等常见脚本使用 cdns,然后对您自己的自定义脚本使用合并和缩小。您应该尽量让自己的脚本只有一个请求。

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