为什么每次调用执行多个ajax调用的时间会增加?

时间:2011-05-18 11:01:00

标签: php jquery ajax

我有一个包含Google地图的页面。在页面加载时,只有一个标记,用户可以使用表单动态添加标记。

我使用AJAX调用检索数据库中的坐标。每次调用返回150个标记。因此,如果我必须检索更多标记,我会进行另一个调用,直到我的地图上显示所有标记。

我注意到(加载2500个标记和firebug)时间为每次调用执行服务器端操作增加。

任何人都可以解释为什么以及是否有办法解决它(因为,最后,电话需要大约30秒)?

编辑:

每次通话的执行时间(尝试检索约2500个标记):

request 1  : 2.54s
request 2  : 1.83s
request 3  : 1.25s
request 4  : 1.31s
request 5  : 1.4s
request 6  : 1.81s
request 7  : 2.86s
request 8  : 8.25s
request 9  : 20.06s
request 10 : 19.25s
request 11 : 23.33s
request 12 : 25.86s
request 13 : 26.62s
request 14 : 27.85s
request 15 : 32.37s
request 16 : 34.91s
request 17 : 35.82s
request 18 : 36.7s

每个调用的函数完全相同,返回值具有相同的类型和相同的长度。

我做了很多调用,以便用户可以在加载标记时继续在地图上工作。

1 个答案:

答案 0 :(得分:2)

如果你在被调用的脚本中使用session_start,那么只有一个调用可以同时执行,因为会话文件被锁定,直到第一个调用脚本终止并释放该锁,或者通过调用session_write_close手动释放它( ),wherupon下一个排队的调用可以运行并依次锁定文件。

使用单个调用可以更容易一次性检索所有标记数据,而不是每组150个标记条目的大量单个调用...这将绕过任何会话锁定问题,因为只有单个脚本正在执行;并且对网络开销也更有效