是否有最大数量的Get请求?

时间:2017-11-30 05:26:49

标签: javascript jquery get promise xmlhttprequest

根据标题,是否有最大数量的Get请求?

我需要向rest API发送几百个get请求才能动态地将数据加载到网页中,但我发现如果我创建一个Promise.All数组并在.then中输出promise数据,最终我得到由于请求超时而未定义。

这是由于连接数量的限制吗?有大量同时请求的最佳做法吗?

感谢您的见解!

1 个答案:

答案 0 :(得分:0)

接收服务器具有可以处理多少同时请求的特定功能。它可能是一个很小的数字或非常大的数字,取决于一大堆东西,包括服务器配置,服务器软件架构,发送的请求类型等等。

如果您从服务器获得超时,那么您可能发送了足够的请求,服务器无法在配置任何请求超时之前处理所有这些请求(在客户端或服务器上),因此您得到超时错误。

在客户端上处理此操作的常用方法是控制您一次发送多少个同时请求,然后在完成后,您可以发送下一个等等。您将不得不进行测试以找出接收服务器的功能,然后您应该退出一点,以允许来自其他来源的其他负载在您的请求运行时执行一些空间。

假设您的请求不是服务器上非常重要的事情,我通常会一次测试5或10个请求,看看接收服务器如何处理它。

这里讨论了很多控制方法:

Promise.all consumes all my RAM

Make several requests to an API that can only handle 20 request a minute

并发控制也是Promise.map() in the Bluebird promise library的一部分。

  

是否有最大数量的Get请求?

由于各种原因,服务器可以同时处理多少个请求。每个服务器设置可能都不同,它还取决于您发送的请求类型(以及它们必须执行的操作)。一些服务器可能能够处理数十万个请求(可能是因为它们背后有一个集群,并且它们被配置为负载很大)。较小的配置一次只能处理几十个。

  

这是由于连接数量的限制吗?

任何接收服务器都将限制允许排队的传入连接数。这取决于很多因素,你(从外面)无法确切知道这个限制是什么。超时错误通常并不意味着您达到此限制。