我有一个带有谷歌地图的页面。在页面加载时,只有一个标记,用户可以使用表单动态添加标记。
我使用 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
对于每个调用和返回值具有相同类型和相同长度的函数完全相同。
我做了很多调用,以便用户可以在加载标记时继续在地图上工作。
如果在被调用脚本中使用session_start,则只能同时执行单个调用,因为会话文件被锁定,直到第一个调用脚本终止并释放该锁定,或者通过调用 session_write_close() 手动释放,下一个排队的调用可以依次运行并锁定文件。
使用单个调用一次性检索所有标记数据可能更容易,而不是对每组 150 个标记条目进行大量单个调用......这将绕过任何会话锁定问题,因为只执行一个脚本;并且对网络开销也更有效