2并发ajax请求—一慢一快,两者同时结束
我必须(通过Ajax)同时查询2个脚本 我确信其中一个很快,它只显示一些html,第二个是使用Web服务进行查询 快速请求总是在第一个请求之后发送。但是,尽管我做了所有的尝试,快速/快速的尝试永远不会在缓慢的尝试之前完成 用于调用第一个长ajax请求的代码:2并发ajax请求—一慢一快,两者同时结束,ajax,apache,jquery,Ajax,Apache,Jquery,我必须(通过Ajax)同时查询2个脚本 我确信其中一个很快,它只显示一些html,第二个是使用Web服务进行查询 快速请求总是在第一个请求之后发送。但是,尽管我做了所有的尝试,快速/快速的尝试永远不会在缓慢的尝试之前完成 用于调用第一个长ajax请求的代码: $.ajax({ type: "POST", url: '/fr/ajax_flight_get_other_oneway', cache: false, dataType:
$.ajax({
type: "POST",
url: '/fr/ajax_flight_get_other_oneway',
cache: false,
dataType: 'json',
success: function(data) {
// some treatment
}
$.ajax({
type: "POST",
url: '/fr/load_back_forflight?id=SN4422_23',
cache: false,
data: "comps="+compSelectedCodes+"&escale="+escale,
dataType: 'json',
success: function(data) {
// some treatment
}
第二个更快的ajax请求的代码:
$.ajax({
type: "POST",
url: '/fr/ajax_flight_get_other_oneway',
cache: false,
dataType: 'json',
success: function(data) {
// some treatment
}
$.ajax({
type: "POST",
url: '/fr/load_back_forflight?id=SN4422_23',
cache: false,
data: "comps="+compSelectedCodes+"&escale="+escale,
dataType: 'json',
success: function(data) {
// some treatment
}
是Apache中应该更改的内容还是jQuery中的内容?将慢的放在快的成功回调中。这将保证fast请求在启动第二个请求之前先完成。可能是浏览器决定对这两个请求使用相同的HTTP连接(使用HTTP头保持活动状态),因此它似乎处于排队状态。这不是jQuery的事情——浏览器可以选择这样做 使用浏览器的HTTP网络流量调试器查看情况是否如此 否则,您的web服务器可能只允许每个客户端有一个连接,并且正在对它们进行排队。见此: 试试这个:
$.ajax({
type: "POST",
url: '/fr/ajax_flight_get_other_oneway',
cache: false,
dataType: 'json',
success: function(data) {
// some treatment
//The code for the second faster ajax request:
$.ajax({
type: "POST",
url: '/fr/load_back_forflight?id=SN4422_23',
cache: false,
data: "comps=" + compSelectedCodes + "&escale=" + escale,
dataType: 'json',
success: function(data) {
// some treatment
}
});
}
});
我找到了我问题的解决方案,它与会议有关 该会话基于文件系统。因此,第一个(长查询)是锁定会话文件,然后第二个被强制等待长查询完成 通过在DB中使用会话,我解决了这个问题 感谢您的帮助jQuery不会对请求排队。似乎只有一个工作人员在apache中监听以处理对该网站的请求。