【问题标题】:What are the pros and cons of loading an angular page with multiple get requests instead of one get request?加载具有多个获取请求而不是一个获取请求的角度页面的优缺点是什么?
【发布时间】:2018-08-27 18:40:15
【问题描述】:

我有一个植物详细信息页面,其中包含植物数据、一个显示附属链接产品描述轮播的附属链接组件和一个显示详细信息页面的 cmets 的组件。

我希望这样的页面能够快速加载,因为这可能会提高我的网站在谷歌上的排名。考虑到这一点,我正在考虑对 3 个组件发出多个获取请求,首先对植物数据进行获取请求,然后是附属链接数据,最后是 cmets。

这会导致页面加载速度更快吗?我问这个是因为在这个stackoverflow线程Very large HTTP request vs many small requests 有人提到,使用多个小的 get 请求而不是一个大的 get 请求会导致分配开销,从而使加载总体上变慢。

我还有一个小问题:如果我想让不同的组件并行加载,我应该在 html 模板页面中为页面中的affiliatelink 和 cmets 组件使用 async 关键字吗?不同的get请求呢,可以并行发送还是一次只能发送一个?

谢谢

【问题讨论】:

  • 我会为每个“数据集”单独请求。这样您就可以看到一些组件/数据,并且在它全部恢复之前不会看起来屏幕被冻结。对于将显示数据的每个区域,使用某种加载图标也会很好。我更喜欢 ngx-loading 模块,但那里有很多

标签: angular http get


【解决方案1】:

HTTP 请求通常是异步的。这意味着,它们不会阻止您的浏览器执行线程(浏览器是单线程的)来等待接收数据。话虽如此。最好让它们平行。

但这完全取决于您提出这些请求的方式以及以后的请求是否依赖于前者。

如果您的 PlantDataComponent、AffiliateLinkComponent 和 DetailsPageCommentsComponent 是同级组件,则可以将它们全部一起加载。为此,您必须对它们各自的服务进行并行 API 调用。

但是,如果其中一个组件要在前一个组件的用户交互之后显示,那么您应该等待该用户交互,从而延迟加载数据。希望这是有道理的。

【讨论】:

  • 兄弟姐妹是什么意思,PlantDataComponent是父组件,另外两个嵌套在这个组件/页面内。
  • 兄弟,我的意思是如果两个组件在模板中彼此相邻加载。
  • 好的,我应该在 html 中为我想要并行加载的组件使用async 吗?不使用异步意味着在当前组件完成加载之前不会加载另一个子组件,对吗?所以如果affiliatelinkcomponent标签在cmets标签之上,那么在affiliateLinkComponent加载完成之前,cmets和affiliatelinkComponent下面的所有东西都不会继续加载,除非我在affiliateLinkComponent上使用async属性,这是它的工作原理吗?
  • 异步是什么?你说的是最近在 ES2017 中引入的 async 管道还是 async 关键字?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 2021-04-09
  • 2018-02-16
  • 2019-11-23
  • 1970-01-01
  • 2012-07-18
  • 2019-02-08
相关资源
最近更新 更多