我有一个奇怪的问题,有时如果我快速连续地向我的 Apache 2.2 服务器发出两个 AJAX 请求,第二个请求将等待第一个请求完成后再完成。
例如,我有两个请求,一个休眠 10 秒,一个立即返回。如果我运行立即返回的请求,它将始终在 300 毫秒内返回。但是,如果我调用需要 10 秒的请求,然后在大约 50% 的时间内调用立即返回的请求,则第二个请求将等到第一个完成,并且 chrome 会在收到 10 秒前报告该请求太回复。另一半时间,快速请求将立即返回。
我找不到任何模式让它以一种或另一种方式运行,它有时会随机阻止快速 AJAX 请求,而其他时候它会按预期运行。我正在使用只有我正在访问的开发服务器,并且我已将 MaxRequestsPerChild 等几个变量设置为较高的值。
有谁知道为什么 Apache 看似随机地将我的 AJAX 请求转换为同步请求?
这是我正在运行的代码:
$.ajax({async:true,dataType:'json',url:'/progressTest',success:function(d){console.log('FINAL',d)}}); // Sleeps for 10 seconds
$.ajax({async:true,dataType:'json',url:'/progressTestStatus',success:function(d){console.log('STATUS',d)}}); // Takes ~300ms
这是两个屏幕截图。第一个按预期运行,第二个等待慢速进程首先完成(在示例中,超时设置为 3 秒)。
更新:根据下面的评论 - 这似乎与 Chrome 一次只执行一个请求有关。任何想法为什么 Chrome 会对异步请求设置如此低的限制?