Esecuzione di chiamate ajax in setTimeout dopo gli intervalli impostati?

1

Sviluppiamo un'applicazione che coinvolge molto ajax. Ad esempio mostrare le notifiche degli utenti, aggiornare ciò che vedono tramite ajax mentre si trovano sulla pagina web. Questo aggiornamento è dovuto alle azioni di altri utenti nell'applicazione.

  1. Nel codice base stiamo generando una query all'interno di setTimeout funzione di javascript. Questo fa una chiamata ajax.
  2. Ogni chiamata è una query separata al database.
  3. Ci sono molte chiamate sulla stessa pagina.

Quindi eseguiamo query sul database dopo 15 secondi, indipendentemente dal fatto che qualcosa cambi o meno. Questo approccio funzionerà se ci aspettiamo un traffico elevato?

    
posta Wasim 01.08.2014 - 12:24
fonte

3 risposte

1

Il polling come questo può essere costoso (in termini di utilizzo delle risorse), ma indipendentemente dal fatto che causi un problema dipende da molti fattori (numero di utenti, dimensione di db, hardware ...).

Forse dovresti prendere in considerazione l'utilizzo di eventi inviati dal server .

    
risposta data 01.08.2014 - 12:42
fonte
1

I problemi sorgono principalmente a causa delle limitazioni correnti dei browser per eseguire solo un numero limitato di richieste simultanee. Il numero di richieste simultanee varia a seconda del browser ma di solito entro 2-6. Quindi, se una pagina ha più setTimeOut (), passerà solo il numero predeterminato di richieste. Altri seguiranno solo quando tali richieste saranno complete.

    
risposta data 01.08.2014 - 12:54
fonte
1

Sì, il polling funzionerà. Non è il modo più sofisticato di guardare i cambiamenti, ma farà il trucco. Non possiamo dirti se il tuo server sarà in grado di gestirlo o meno, è solo qualcosa che dovrai testare. Ma immagino che se stai facendo una singola query di database ottimizzata per sondaggio e restituendo piccole quantità di dati, sarai in grado di gestire un traffico piuttosto elevato.

Detto questo, potresti prendere in considerazione lunghi sondaggi o websocket. Ciò richiederebbe modifiche al modo in cui il pezzo del tuo server funzionava, ma ti avrebbe dato più aggiornamenti in tempo reale dal server.

    
risposta data 01.08.2014 - 17:59
fonte

Leggi altre domande sui tag