2011-01-12 88 views
0

庞大的延迟我尝试着做一些简单的Ajax调用与此代码段的网页内容更新:在第二jQuery的Ajax请求

$("a.ajaxify-watched").bind("click", function(event) { 

    $item = $(this); 

    $.ajax({ 
     url: $(this).attr("href"), 
     global: false, 
     type: "GET", 
     data: ({ 
      callback : "inline" 
     }), 
     dataType: "json", 
     async:false, 
     success: function(msg){ 
      if (msg.status == 200) { 
       toggleStatus($item, msg) 
      } 
     } 
    }); 
    return false; 
}); 

这完美的作品对我来说那里有没有什么好担心的代码,但速度被执行。

第一次一切正常工作:操作47毫秒。但在此之后,其他所有Ajax调用都会持续2.6秒 - 每次。我检查了Firebug,发现它显示为“等待时间”。

我真的不能说这里发生了什么。 我们最近从纯Apache2切换到Nginx缓存反向代理,并使用Apache作为后端Php解释器进行负载平衡。我们可以看到巨大的性能提升,一切工作都很顺利。我不知道我的问题何时首次出现,以及它是否确实与我们的新服务器设置有关。

我今天才发现,jQuery有问题,所以我只是想给尽可能多的信息。

谢谢,让我知道我是否应该提供更多信息。

+2

您可能需要同步答案,但是您是否尝试过没有“async:false”的脚本? – gabel 2011-01-12 10:47:00

+0

[AJAX](http://en.wikipedia.org/wiki/Ajax_(编程))表示**异步** JavaScript和XML。就像现在一样,当`.ajax()`是_on_时,整个页面被阻塞。 – Shikiryu 2011-01-12 10:53:21

回答

0

如果Firebug表示等待它看起来像服务器问题。

有没有办法直接调用页面没有AJAX?如果是这样,尝试做到这一点,并检查页面加载速度还是很慢?

此外,请检查您是否没有任何触发Ajax的事件可能会影响到这一点。

大多数服务器只处理来自同一服务器的单个页面加载,所以多个页面加载在队列中处理,所以如果你有平行的Ajax调用,他们可能必须等待对方。