Pregunta

¿Qué es lo mejor para manejar la paginación? ¿El lado del servidor o hacerlo dinámicamente usando javascript?

Estoy trabajando en un proyecto que pesa mucho en el ajax y extrae datos dinámicamente, por lo que he estado trabajando en un sistema de paginación de javascript que usa el dominio, pero estoy empezando a pensar que sería mejor manejarlo todo del lado del servidor.

¿Cuáles son los pensamientos de todos?

¿Fue útil?

Solución

La respuesta correcta depende de sus prioridades y del tamaño del conjunto de datos que se paginará.

La paginación del lado del servidor es mejor para:

  • gran conjunto de datos
  • Carga de página inicial más rápida
  • Accesibilidad para aquellos que no ejecutan javascript

La paginación del lado del cliente es mejor para:

  • pequeño conjunto de datos
  • Cargas de página posteriores más rápidas

Entonces, si está paginando por razones principalmente estéticas, tiene más sentido manejarlo del lado del cliente. Y si está paginando para reducir el tiempo de carga inicial, el lado del servidor es la opción obvia.

Por supuesto, la ventaja del lado del cliente en los tiempos de carga de la página subsiguiente disminuye si utiliza Ajax para cargar las páginas siguientes.

Otros consejos

Hacerlo en el lado del cliente hará que su usuario descargue todos los datos al principio que no sean necesarios, y eliminará el beneficio principal de la paginación.

La mejor manera de hacerlo para este tipo de aplicaciones AJAX es hacer que AJAX llame al servidor para la próxima página y agregue la actualización de la página actual usando el script del lado del cliente.

Si tiene páginas grandes y una gran cantidad de páginas, es mejor que solicite páginas en trozos desde el servidor a través de AJAX. Deje que el servidor haga la paginación, en función de la URL de su solicitud.

También puede obtener previamente las siguientes páginas que probablemente verá el usuario para hacer que la interfaz parezca más receptiva.

Si solo hay unas pocas páginas, puede ser una mejor opción obtener todo el contenido por adelantado y paginar en el cliente.

Incluso con tamaños de datos pequeños, la mejor opción sería la paginación del lado del servidor. No tendrá que preocuparse más adelante si su aplicación web se amplía aún más.

Y para tamaños de datos más grandes, la respuesta es obvia.

Lado del servidor: envíe al cliente solo el contenido suficiente para la vista actual.

En un mundo práctico de límites, buscaría en el lado del servidor para conservar todos los recursos asociados con el envío de datos. Además, el servidor debe protegerse de un cliente malintencionado / defectuoso que solicita una página ENORME.

Una vez que el código esté felizmente acelerado, agregaría " smarts " al cliente para obtener el " siguiente " y " anterior " página y mantenga eso en la memoria. Cuando el usuario vaya a la página siguiente, actualice su caché.

Si el software del cliente realiza este tipo de almacenamiento en caché de la página, tenga en cuenta la rapidez con la que sus datos envejecen (es probable que cambie) y si debe verificar que su página de datos en caché sigue siendo válida. Tal vez vuelva a solicitarlo si supera los 2 minutos. Quizás tengas un " sucio " bandera en el Algo como eso. Espero que encuentre útil esta información. :)

¿Quiere decir que su JavaScript tiene todos los datos en la memoria y muestra una página a la vez? ¿O que descarga cada página del servidor según sea necesario, usando AJAX?

Si es lo último, es posible que también deba pensar en la clasificación. Si ordena con JavaScript, solo podrá ordenar una página a la vez, lo que no tiene mucho sentido. Por lo tanto, su clasificación debe realizarse en el servidor.

Prefiero la paginación del lado del servidor. Sin embargo, al implementarlo, debe asegurarse de que está optimizando su SQL correctamente. Por ejemplo, creo que en MySQL, si usa la opción LIMIT, no usa el índice, por lo que necesita volver a escribir su sql para usar el índice correctamente.

G-Man

Otra cosa a destacar aquí es que muy rara vez se limitará a simplemente buscar en un conjunto de datos sin procesar.

Es posible que tenga que buscar ciertos términos en una o más columnas que está mostrando, y luego ordenar en unas pocas columnas y luego darles a los usuarios la capacidad de navegar a través de este conjunto de datos filtrado.

En una situación como esta, es posible que tenga que ver si sería mejor tener esta búsqueda lógica y / o clasificar el lado del cliente o el lado del servidor.

Otra cosa a tener en cuenta es que la API de búsqueda en la nube de Amazon te brinda una capacidad de búsqueda muy poderosa y, obviamente, querrás permitir que la búsqueda en la nube maneje la búsqueda y la clasificación si tienes tus datos alojados allí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top