2011-01-12 91 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調用,他們可能必須等待對方。