Domanda

Cosa è meglio gestire l'impaginazione? Lato server o farlo in modo dinamico utilizzando JavaScript?

Sto lavorando a un progetto che è pesante sull'ajax e inserisce i dati in modo dinamico, quindi ho lavorato su un sistema di paginazione javascript che utilizza il dom - ma sto iniziando a pensare che sarebbe meglio gestirlo tutto lato server.

Quali sono i pensieri di tutti?

È stato utile?

Soluzione

La risposta giusta dipende dalle tue priorità e dalla dimensione del set di dati da impaginare.

L'impaginazione lato server è ideale per:

  • Set di dati di grandi dimensioni
  • Caricamento della pagina iniziale più veloce
  • Accessibilità per coloro che non eseguono javascript

L'impaginazione lato client è la migliore per:

  • Piccolo set di dati
  • Caricamenti di pagine successivi più veloci

Quindi, se stai impaginando per ragioni principalmente estetiche, ha più senso gestirlo dal lato client. E se stai impaginando per ridurre il tempo di caricamento iniziale, il lato server è la scelta ovvia.

Ovviamente, il vantaggio del lato client nei successivi tempi di caricamento della pagina diminuisce se si utilizza Ajax per caricare le pagine successive.

Altri suggerimenti

Se lo fai sul lato client, il tuo utente scaricherà inizialmente tutti i dati che potrebbero non essere necessari e rimuoverà il vantaggio principale della paginazione.

Il modo migliore per farlo per questo tipo di app AJAX è fare in modo che AJAX chiami il server per la pagina successiva e aggiunga l'aggiornamento della pagina corrente usando lo script lato client.

Se hai pagine grandi e un gran numero di pagine, è meglio richiedere pagine in blocchi dal server tramite AJAX. Quindi lascia che il server esegua l'impaginazione, in base all'URL della tua richiesta.

Puoi anche pre-recuperare le prossime pagine che l'utente probabilmente visualizzerà per rendere l'interfaccia più reattiva.

Se ci sono solo poche pagine, afferrare tutto in anticipo e impaginare sul client potrebbe essere una scelta migliore.

Anche con dimensioni di dati ridotte, la scelta migliore sarebbe l'impaginazione lato server. Non dovrai preoccuparti in seguito se la tua applicazione web si ridimensiona ulteriormente.

E per dimensioni di dati più grandi la risposta è ovvia.

Lato server: invia al client solo il contenuto sufficiente per la vista corrente.

In un mondo pratico di limiti, farei una pagina sul lato server per conservare tutte le risorse associate all'invio dei dati. Inoltre, il server deve proteggersi da un client dannoso / malfunzionante che richiede una pagina ENORME.

Una volta che il codice è felicemente affannoso, aggiungerei "intelligente". al cliente per ottenere il "successivo" e "precedente" pagina e tenerlo in memoria. Quando l'utente passa alla pagina successiva, aggiorna la cache.

Se il software client esegue questo tipo di memorizzazione nella cache delle pagine, considera la velocità con cui i tuoi dati invecchiano (è probabile che cambi) e se dovresti verificare che la tua pagina memorizzata nella cache sia ancora valida. Forse ri-richiederlo se dura più di 2 minuti. Forse hai un " sporco " bandiera in esso. Qualcosa del genere. Spero che ti sia d'aiuto. :)

Vuoi dire che il tuo JavaScript ha tutti i dati in memoria e mostra una pagina alla volta? O che scarica ogni pagina dal server secondo necessità, usando AJAX?

Se si tratta di quest'ultimo, potrebbe anche essere necessario pensare all'ordinamento. Se ordini tramite JavaScript, sarai in grado di ordinare solo una pagina alla volta, il che non ha molto senso. Quindi il tuo ordinamento dovrebbe essere fatto sul server.

Preferisco l'impaginazione lato server. Tuttavia, quando lo si implementa, è necessario assicurarsi di ottimizzare correttamente il proprio SQL. Ad esempio, credo in MySQL, se usi l'opzione LIMIT non usa l'indice quindi devi riscrivere il tuo sql per usare correttamente l'indice.

G-Man

Un'altra cosa da sottolineare qui è che molto raramente ti limiterai a sfogliare semplicemente un set di dati non elaborato.

Potrebbe essere necessario cercare determinati termini in una o più colonne che si stanno visualizzando, quindi pronunciare l'ordinamento su alcune colonne e quindi dare agli utenti la possibilità di sfogliare questo set di dati filtrato.

In una situazione come questa potresti dover vedere se sarebbe meglio avere questa ricerca logica e / o ordinare lato client o lato server.

Un'altra cosa da considerare è che l'API di ricerca nel cloud di Amazon ti offre alcune capacità di ricerca molto potenti e ovviamente vorrai consentire alla ricerca nel cloud di gestire la ricerca e l'ordinamento per te se ti capita di avere i tuoi dati ospitati lì.

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