2015-11-27 25 views
11

Così ho un'applicazione web che sta facendo circa 14-15 chiamate AJAX ad alcune API. Il problema è la quantità di tempo che richiede tutte le chiamate AJAX è quasi 3 volte rispetto al tempo in cui ogni singola API mi mostra la risposta quando digito il suo URL nel browser.Modo rapido per effettuare più chiamate AJAX

Sto facendo tutte le chiamate AJAX all'istante nell'evento DOM Ready.

La cosa è come posso accelerare questo processo di effettuare 15 chiamate AJAX insieme, ottenere la risposta il più velocemente possibile e Manipolare il DOM di conseguenza.

alcuni punti che ho nella mia mente:

  1. Tutte le chiamate AJAX devono essere ASYNC in natura. (Già farlo).
  2. Non effettuare tutte le chiamate AJAX contemporaneamente. Indurre una sorta di timeout come fare tutte le chiamate AJAX allo stesso tempo potrebbe bloccare la larghezza di banda e rallenta il tempo di svolta del processo.
  3. Riduzione del numero di chiamate API con qualsiasi mezzo. (Già farlo).
  4. Manipola il DOM il più minimamente possibile. (Già farlo).
  5. Impostazione cache:true in configurazione AJAX. Non penso che sarà di grande aiuto, comunque lo sto facendo ovunque sono sicuro che i contenuti si aggiorneranno molto lentamente.

Qualsiasi suggerimento sarà prezioso! Grazie.

Il modo in cui sto facendo chiamate 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

Mostra il tuo modo di fare più richieste Ajax .. –

+0

@ user1354678 digitato Si prega di verificare – void

+0

'Ridurre il numero di chiamate API con qualsiasi mezzo 'Certo è dove dovresti iniziare. Se puoi gestire tutti i dati semplicemente effettuando una richiesta Ajax, sei un vincitore :) –

risposta

1

Vi consiglio di utilizzare il modulo async.js sul client. Potrebbe essere questo ciò che stai cercando.

+0

Che cosa fa? E come sarà più veloce se effettuo chiamate AJAX parallele? – void

+2

È davvero diffrente rispetto all'utilizzo della logica di coda promessa/differita? –

4

Lei non può emettere la chiamata ajax direttamente, ma li fila e lasciare che un gestore di controllo della coda, vedere qui:. Queue ajax requests using jQuery.queue()

+0

Grazie. Lo sapevate, ma come fa a rendere le cose più veloci? – void

+0

Fare cose in sequenza su risorse limitate è sempre più veloce che in parallelo.La risorsa limitata qui è la larghezza di banda, come già affermato nel vostro OP, e probabilmente anche il browser che ha bisogno di gestire tutte le richieste XML –

+0

Larghezza di banda non è un problema, ma diciamo che una chiamata richiede 10 secondi, quindi se farò 10 di questi tipi di chiamate in serie, prenderanno almeno 100 secondi (senza abilitare la memorizzazione nella cache) e se ne avrò 10 in parallelo, il tempo sarà molto inferiore. Che cosa dici? – void

Problemi correlati