【问题标题】:Is it better to compose multiple AJAX calls parallel or serial?并行或串行编写多个 AJAX 调用更好吗?
【发布时间】:2013-11-18 15:47:14
【问题描述】:

我正在开发一个单页应用程序,它向服务器发送多个 AJAX 请求。

系统使用轮询,因为一些数据请求可能需要大约 10-20 分钟来计算。

  • 客户端向服务器请求数据
  • 服务器分发作业 ID
  • 客户端每隔几秒就向服务器询问一次结果

轮询算法会随着时间的推移降低轮询频率,每隔 10 秒停止一次。

但是当客户端在短时间内发送不同的数据请求时,他最终会得到大约 10-20 个作业 ID,并开始轮询所有这些。

是简单地这样做更好,让浏览器并行处理这些请求,还是应该调度每个请求并序列化它们?

序列化它们会带来性能优势吗?

【问题讨论】:

  • 为什么不提供允许客户端在单个请求中轮询多个作业的 API?
  • 不要担心连续做,但一定要考虑Pointy的建议。
  • 浏览器自己处理。取决于您的浏览器,它一次只会打开 2-6 个并行请求,当这 2-6 个请求中的一个完成时打开下一个。
  • 我想过这个,但这需要重写服务器和客户端之间的接口,我希望有一个更快的解决方案:D

标签: javascript ajax


【解决方案1】:

如果每个初始请求都返回一个唯一的 ID,并且每个页面都有一个唯一的用户 ID,那么您可以轮询每个请求的哪些信息。

在 JSON 中,我会返回任何已完成请求的结果,以及尚未完成的请求的当前状态,例如它是否已开始处理,可能还有完成的百分比,或者有多少请求在前面的请求。

这将简化工作,因为您不会进行多次轮询调用,而只需进行一次,返回一个复杂的结果以向用户反馈每个请求的状态。

我发现为长时间运行的查询提供一些状态信息很有用,否则用户可能会认为请求丢失了。

【讨论】:

    【解决方案2】:

    几个月前,由于多次 ajax 调用,我遇到了性能问题,但从那时起我就没有深入研究过这个话题:High latencies loading stores in an ExtJS 4.1 MVC application

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      相关资源
      最近更新 更多