Dividere una grande richiesta in più piccole richieste di ajax

6

Non sono sicuro per quanto riguarda la scalabilità del seguente modello. Ho poca esperienza con sistemi di grandi dimensioni, un gran numero di richieste e così via, ma sto cercando di costruire alcune funzionalità considerando innanzitutto la scalabilità.

Nel mio scenario c'è una pagina utente che contiene dati per:

  1. Dettagli dell'utente (nome, posizione, luogo di lavoro ...)
  2. Attività dell'utente (post di blog, commenti ...)
  3. Statistiche utente (valutazione, numero di amici ...)

Per mostrare tutto questo sulla stessa pagina, per una richiesta ci saranno almeno 3 diverse query di database sul back-end. In alcuni casi, immagino che quelle query funzioneranno abbastanza bene, quindi l'esperienza utente potrebbe risentirne in attesa tra una richiesta e l'altra.

Questo è il motivo per cui ho deciso di eseguire solo il passaggio 1 (dettagli utente) come richiesta normale. Dopo aver ricevuto la risposta, vengono inviate due richieste Ajax per i passaggi 2 e 3. Quando vengono ricevute tali risposte, inserisco solo i dati nei wrapper destinati.

Per me almeno questo ha più senso. Tuttavia ci sono 3 richieste invece di una per ogni visualizzazione della pagina utente. Ciò influenzerà il sistema a lungo termine? Suppongo che questo tipo di approccio richieda più risorse, ma questo scambio di UX per risorse è un buon quadrante o dovrei attenermi a una semplice richiesta?

    
posta Ionut 12.11.2012 - 10:20
fonte

3 risposte

4

Fondamentalmente la velocità è ancora meno così no che non funziona davvero. Ora hai ancora le 3 query che + overhead di 3 richieste. Sebbene la pagina potrebbe essere più veloce poiché non deve attendere il completamento di tutti.

Se non ti piace la velocità non abusare di questa tecnica ajax poiché non cambierà il tuo problema.

Cache invece i dati e mostra la cache. Potresti anche mostrare una cache più vecchia e quindi caricare la versione più recente con ajax se ci sono nuovi dati. Quindi l'utente ha la pagina completa e le più recenti vengono aggiunte in seguito alla visualizzazione della pagina.

Quella richiesta aggiorna direttamente la tua cache in modo da avere il meglio di entrambi i mondi.

    
risposta data 12.11.2012 - 11:25
fonte
3

In assoluta velocità, questa soluzione sarebbe più lenta. Tuttavia, nella velocità percepita può essere più veloce.

Gli utenti non leggono l'intera pagina tutto in una volta, iniziano leggendo ciò a cui sono più interessati, quindi possono passare ad altre parti della pagina. Ciò significa che, nella maggior parte dei casi, l'utente non realizzerà nemmeno alcune parti dello schermo non ancora completamente caricate.

Nel tuo caso, presumibilmente:

  • I dettagli dell'utente verranno letti per primi se l'utente è sconosciuto, l'attività verrà letta prima se l'utente è conosciuto
  • Le statistiche verranno lette per ultime (se non del tutto)

In questo modo puoi migliorare la velocità percepita mostrando i dettagli o l'attività dell'utente o entrambi e successivamente caricando le statistiche.

    
risposta data 28.12.2012 - 16:39
fonte
1

La mia azienda è diretta verso la pubblicazione di pagine anonime con javacript che va e recupera le informazioni specifiche dell'utente e quindi aggiorna la pagina.

Se il tuo sito passa attraverso una pesante procedura di boot strap per la pagina e ciascuna delle sezioni, stai quadruplicando il carico del server. Se riesci a bypassare lo spreco di bootstrap, starai bene. il caching è un buon modo per farlo, ma puoi farlo con o senza rompere la pagina in piccoli bit.

a prescindere, se hai query lente (che sembrano essere il tuo impeto), considera alcune ottimizzazioni di query, alcuni caching e spinners! se si prevede che il caricamento di una pagina sia lento, mostra uno spinner con il messaggio "caricamento dei dati ....". Se riesci a caricare un'intestazione & piè di pagina con questo messaggio amichevole, quindi mostralo tutto in una volta, o quando arrivano le sezioni, gli utenti non si preoccupano più di tanto. Può anche farli sentire importanti.

Se non si dispone di memorizzazione nella cache o di ottimizzazioni della query, inizierei da lì. una volta che hai un buon meccanismo di memorizzazione nella cache, sarai in grado di usarlo ovunque, e questo ti aiuterà molto. rompere una pagina in più richieste è una porzione simile di lavoro, ma aiuta solo l'una pagina, e l'utente deve ancora aspettare fino a prima.

    
risposta data 13.11.2012 - 22:13
fonte

Leggi altre domande sui tag