2015-11-27 69 views
11

因此,我有一個Web應用程序正在對某些API進行14-15個AJAX調用。問題是,在瀏覽器中輸入URL時,所有AJAX調用所花費的時間大約是每個API顯示我的響應時間的3倍。快速的方法來進行多個AJAX調用

我正在DOM Ready事件中立即調用所有AJAX調用。

問題是我怎樣才能加快這個過程,使15個AJAX調用在一起,儘可能快地獲得響應,並相應地操作DOM。

幾點,我在我的腦海:

  1. 所有的AJAX調用應該是異步的性質。 (已經在做)。
  2. 不要同時進行所有AJAX調用。由於同時使所有AJAX呼叫可能會阻止帶寬並減慢流程的週轉時間,因此引發某種超時。
  3. 以任何方式減少API調用次數。 (已經在做)。
  4. 儘可能少地操作DOM。 (已經在做)。
  5. 在AJAX設置中設置cache:true。我不認爲這會真的有幫助,但我仍然在做,無論我確信內容會更新非常慢。

任何建議將是有價值的!謝謝。

我想提出AJAX的方式調用

$(document).ready(function(){ 

    loadSentimentModule(); 
    loadCountModule(); 
    loadEntitiesModule(); 
    // Some more function calls. 

}); 

function loadSentimentModule(){ 

    $.ajax({ 
      url:someurl, 
      cache:true, 
      dataType:"json", 
      success: function(data){ 

       // Based on data manipulating DOM. 
      } 

} 

// Same kind of function defintions for all the functions. 
+0

顯示你做多Ajax請求的方式.. –

+0

@ user1354678中鍵入請檢查 – void

+0

'無論如何減少API調用的數量'當然,這是你應該開始的地方。如果您只需發出一個ajax請求即可處理所有數據,那麼您就是贏家:) –

回答

1

我建議你使用async.js模塊上的客戶端。可能是這個你在找什麼。

+0

它是做什麼的?以及如何進行並行AJAX調用會更快? – void

+2

真的不像使用promise/deferred隊列邏輯嗎? –

4

你可能不直接發出Ajax調用,但排隊他們,讓管理者控制的隊列,在這裏看到:Queue ajax requests using jQuery.queue()

+0

Thanks。Didn'但是它是如何讓事情變得更快的呢? – void

+0

在有限的資源中按順序執行事情總是比並行執行速度快,這裏的有限資源是帶寬,正如你在OP中說過的,也可能是瀏覽器需要處理所有的XML請求 –

+0

帶寬我不這是一個問題,但說一個電話需要10s,然後如果我將這些電話中的10個系列,然後他們將採取至少100s(沒有啓用緩存),如果我將其中10個並行的時間將真的少。什麼說? – void