大量并发的ajax调用以及处理它的方法

时间:2011-05-04 01:01:44

标签: ajax json jquery concurrency

我有一个网页,在加载时,需要从服务器执行大量JSON抓取,以动态填充各种内容。特别是,它更新了一个大数据结构的部分,从中我可以得到数据的图形表示。

因此它在Chrome中运行良好;然而,Safari和Firefox似乎有些受损。在查询众多JSON请求后,浏览器变得迟钝且无法使用。我假设这是由于所述数据结构的相当昂贵的迭代。这是一个有效的假设吗?

如果没有更改查询语言,我该如何缓解此,以便它只需一次获取?

我在考虑应用一个可以限制并发Ajax查询数量的队列(因此​​也限制了对数据结构的并发更新次数)......有什么想法吗?有用的指针?其他建议?

2 个答案:

答案 0 :(得分:2)

在浏览器端JS中,创建一个围绕jQuery.post()的包装器(或者您使用的任何方法) 将请求附加到队列 还要创建一个函数'queue_send',它实际上会调用jQuery.post()传递整个队列结构。

在服务器上创建一个名为'queue_receive'的代理函数,它将JSON重放到您的服务器接口,就像它来自浏览器一样,将结果收集到一个响应中,然后发送回浏览器。 浏览器端queue_send_success()(queue_send的成功处理程序)必须解码此响应并填充数据结构。

有了这个,您应该能够将初始化流量减少到一个实际请求,也可以在您的网站上整合其他一些请求。

答案 1 :(得分:0)

  特别是,它更新了一个较大的数据结构的一部分,我从中得到了数据的图形表示。

我试试:

  • 在响应进入时排队,然后更新结构
  • 隐藏代表不可见,直到回复在

Magicianeer's answer也很好 - 但是我不确定它是否符合您对“没有更改查询语言的定义,因此它只是一次获取” - 它会避免重新设计现有的逻辑。