2014-07-04 41 views
0

我想知道如果浏览器批量数量巨大的ajax请求到单个服务器。我使用jQuery并发送约。一次向服务器发送300个请求。当我查看萤火虫控制台时,看起来好像请求正在分批进行。这是通过jQuery或浏览器完成的吗?浏览器是否批量处理大量的Ajax请求?

编辑: 据我所知,有浏览器到服务器同时连接的最大数目的限制。问题是我可以依靠浏览器处理的请求数量巨大或者我已经实现处理请求队列中的一些(比如在一个时间5名的请求)

+0

它由浏览器完成。这不是说批量请求,而是它拥有最大数量的当代连接,所以它看起来像批量处理它们。 –

回答

1

浏览器确实将请求限制为有限数量的paraller请求,因此它可能看起来是批量发生的。加勒特解释这更好这里How to perform Ajax requests, a few at a time

虽然使用jQuery还可以在配料请求帮助自己用的预计数有望成为解决“未来”之类的方法叫做$。当(),在这种情况下,你的AJAX请求 看Guillaume86在这里解释这个jQuery.when understanding

对不起,我不是直接回答,但这主题的两个问题我提到很好的解释。干杯。

虽然在技术上我回答你的问题,切实为亚历山大说,这是很好的做法,尝试在您的客户端/服务器交互减少到最低可能。

+0

是的。第一个链接回答我的问题。它表示我们可以依靠浏览器来处理并行查询。 –

+0

乐意提供帮助。干杯 –

3

浏览器有没有AJAX请求分组到一个单一的方法“批处理”请求,服务器将不知道如何处理它。肯定会有缓冲区这样的请求,所以一次只处理两个左右的请求。

我使用jQuery和发送约。一次向服务器发送300个请求。

我希望你不打算这样做生产。以编程方式批量处理许多事情可能会更好。

+0

感谢Alexander,我的意思是缓冲区:)。对不起英文不好。我明白了你的观点,但是如果浏览器缓冲请求并一次处理大量请求,那么为什么我必须使用批处理机制? –

+0

这将大大减少您的服务器和客户端负载。每个HTTP请求都有相当多的开销。每次请求获得的数据越多,您将收到的HTTP头等重复数据越少。 –

0

您可以通过设置标题Connection: Keep-Alive;更快地提出请求。然后,浏览器不需要为每个请求创建新的连接。

但是仍然会更好地制作支持某种批处理的服务器API。

例如对于JSON-RPC:

{method:'batch.process', params: [{method:'...'},{method:'...'},...]}