Domanda

Sto costruendo una componente di una pagina web che ha bisogno relativamente costante polling del database. Vedo due diversi approcci per questo, e mi chiedo se uno di loro è meglio degli altri, o se mi manca una terza opzione.

1) Invia fuori una richiesta Ajax ogni 1 o 2 secondi per controllare gli aggiornamenti. Ogni richiesta ritorna immediatamente se ci sono nuovi dati.
2) sparare una singola richiesta AJAX che non tornerà fino a quando non riceve i dati o si verifica un timeout. Su uno di questi happening, che spara la richiesta successiva. (Credo che questo si chiama polling lungo?)

Il numero di query di database sarà lo stesso con entrambi, ma con # 2 ci sarebbero meno richieste di cottura dal browser che potrebbe salvare la larghezza di banda e client risorse. Per il server, è meglio avere una sola richiesta di PHP che i soggiorni attivi e dorme tra le query, o che gli incendi ogni pochi secondi, interroga il DB, poi si spegne? O c'è alcuna differenza e sto sottolineando su questo troppo?

EDIT: Suppongo che dovrei anche lo stato che si tratta di un widget di chat di un più ampio web app. Un leggero ritardo nella comunicazione non sta per uccidere un utente, come la chat è una caratteristica secondaria.

È stato utile?

Soluzione

Long polling scalerà meglio (cioè il carico del server inferiore) a polling, dando molto meglio i tempi di risposta.

Se i tuoi sondaggi destinatario, il tempo medio di viaggio di un messaggio sarà metà della vostra intervallo di polling.

Con polling lungo, la sua istantanea -. Il server attende solo se non c'è niente da dire

Se si sta facendo messaging di chat, andare a lungo sondaggio; è una cosa usabilità.

Il rovescio della medaglia con lunghi polling è è più complicato da implementare; ma la sua non è molto più complicato, ed è ampiamente implementato. Quindi, se non è possibile utilizzare un framework off-the-shelf per il vostro server web di scelta, è possibile impostare a scrivere una ragionevole e si farlo funzionare.

Altri suggerimenti

È possibile anche guardare WebSockets , parte dei più recenti browser (o emulato tramite un < a href = "http://github.com/gimite/web-socket-js" rel = "nofollow"> file Flash si lascia cadere sulla tua pagina)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top