Il polling lungo è una tecnica eccezionale ma, come con qualsiasi soluzione, l'efficacia dipende da molte variabili inclusa l'installazione dell'hardware e quindi non ci sono soluzioni assolute.
Si prega di essere consapevoli del fatto che il polling lungo si mantiene la connessione attiva che causa problemi di prestazioni con molti client.
soluzione
si dovrebbe prendere in considerazione: -
- Ha bisogno di essere quasi in tempo reale (per esempio uno StockTicker)
- Quanto spesso le ajax dati/uscita cambia (chat vs nuovo commento)
- Frequenza dell'evento che causa modifiche ai trigger di dati/output ajax. Questo determinerà come viene generata la cache.
Si dovrebbe essere un parsimonioso quando si tratta di ajax. La richiesta di risposta & deve essere eseguita in base alle necessità. Il successo di un'implementazione ajax sarà incompleto senza una soluzione di caching ben congegnata che sia più basata su eventi piuttosto che su richiesta.
Qui di seguito è una versione semplificata di una delle tecniche abbiamo trovato utile in un progetto: -
- Ogni richiesta sondaggio Ajax che è fatto conterrà output_hash che è il digest dei dati restituiti dal server in precedenza.
- Server controlla questo output_hash rispetto al recente hash dell'output che avrà generato, dall'origine dati preferibilmente memorizzata nella cache.
- Se è diverso, servirà il nuovo contenuto insieme al nuovo output_hash. Altrimenti una piccola risposta/Non modificato per indicare che non ci sono nuovi contenuti.
Nella nostra soluzione abbiamo anche eseguito il calcolo dinamico dell'intervallo del prossimo sondaggio. Mantenendo l'intervallo dinamico consente al server di controllare la richiesta.Ad esempio, supponiamo che la maggior parte dei commenti/risposte si verifichi nella prima ora, oltre al fatto che non vi è alcun punto che abbia il tempo di intervallo di 1 secondo, in modo che il server possa aumentare a 2,3 o 5 secondi in modo dinamico all'aumentare del tempo, piuttosto che hard codifica l'intervallo di 2 secondi. Allo stesso modo, il tempo di intervallo può essere diminuito se c'è una raffica di attività in un vecchio post.
Abbiamo anche controllato i client inattivi e altre cose.
Forse websockets? http://www.davesite.com/html5-code-tutorials/html5_interactive_intro_html_5/websockets/ –
@niko stavo pensando lo stesso quando si trattava di usare gli aggiornamenti on-live basati su ajax e non riuscivo a trovare altre soluzioni. Non penso che ci possa essere una soluzione senza stabilire una connessione con il server. ma nella peggiore delle ipotesi è possibile aumentare l'intervallo di tempo da 2 a 4 o più – motto