2015-11-27 21 views
11

So habe ich eine Webanwendung, die rund 14-15 AJAX Aufrufe an einige APIs macht. Das Problem ist, dass die Zeit, die alle AJAX-Aufrufe brauchen, fast dreimal so lang ist wie die Zeit, in der jede einzelne API mir Antwort anzeigt, wenn ich ihre URL in den Browser eintippe.Schnelle Möglichkeit, mehrere AJAX-Anrufe zu tätigen

Ich mache alle AJAX-Anrufe sofort im DOM-Ready-Event.

Die Sache ist, wie ich diesen Prozess beschleunigen kann, 15 AJAX-Anrufe zusammen zu machen, die Antwort so schnell wie möglich zu erhalten und das DOM entsprechend zu manipulieren.

paar Punkte, die ich in meinem Kopf haben:

  1. die AJAX Alle Anrufe sollten ASYNC Natur sein. (Schon tun es).
  2. Machen Sie nicht alle AJAX-Anrufe gleichzeitig. Erzwingen Sie eine Art Timeout, da alle AJAX-Aufrufe gleichzeitig die Bandbreite blockieren und die Verarbeitungszeit verlangsamen können.
  3. Reduzieren Sie die Anzahl der API-Aufrufe mit allen Mitteln. (Schon tun es).
  4. Manipulieren Sie das DOM so minimal wie möglich. (Schon tun es).
  5. Einstellung cache:true im AJAX-Setup. Ich denke nicht, dass das wirklich helfen wird, immer noch mache ich es, wo ich sicher bin, dass der Inhalt wirklich langsam aktualisiert wird.

Alle Vorschläge werden wertvoll sein! Vielen Dank.

Die Art, wie ich AJAX mache ruft

$(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

Zeigen Sie Ihren Weg, um mehr Ajax Anfragen zu tun .. –

+0

@ user1354678 eingegeben Bitte überprüfen – void

+0

'Reduzieren Sie die Anzahl der API-Aufrufe auf jeden Fall. Sicher, das ist, wo Sie anfangen sollten. Wenn Sie alle Daten nur durch eine Ajax-Anfrage verarbeiten können, sind Sie ein Gewinner :) –

Antwort

1

ich Ihnen empfehlen, das async.js Modul auf den Client zu verwenden. Vielleicht ist es das, wonach du suchst.

+0

Was macht es? Und wie es schneller wird, wenn ich parallel AJAX-Anrufe mache? – void

+2

Ist es wirklich anders als mit Versprechen/Warteschlange Warteschlange? –

4

Sie können den Ajax-Aufruf nicht direkt ausgeben, aber sie Warteschlange und ein Manager die Warteschlange steuern können, finden Sie hier:. Queue ajax requests using jQuery.queue()

+0

Danke. Didn ' Ich wusste davon. Aber wie macht es Dinge schneller? – void

+0

Dinge in einer Sequenz auf begrenzten Ressourcen zu tun ist immer schneller als parallel. Die begrenzte Ressource hier ist die Bandbreite, wie Sie bereits in Ihrem OP angegeben, und wahrscheinlich auch die Browser, der alle XML-Anfragen verarbeiten muss –

+0

Bandbreite ich bin nicht das ein Problem, aber sagen, ein Anruf dauert 10s, wenn ich 10 dieser Art von Anrufen in Serie machen werde dann dauert sie mindestens 100s (ohne Zwischenspeicherung aktiviert)) und wenn ich 10 davon gleichzeitig machen werde, wird die Zeit wirklich weniger sein, was sagt man? – void

Verwandte Themen