2009-01-02 44 views
37

¿Qué es lo mejor para manejar la paginación? ¿Servidor o hacerlo dinámicamente con javascript?Paginación: ¿lado del servidor o lado del cliente?

Estoy trabajando en un proyecto que es pesado en el ajax y atrayendo datos dinámicamente, así que he estado trabajando en un sistema de paginación javascript que usa el dom, pero estoy empezando a pensar que sería mejor para manejarlo todo del lado del servidor.

¿Cuáles son los pensamientos de todos?

Respuesta

58

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

la paginación del lado del servidor es el mejor para:

  • grandes conjuntos de datos
  • inicial más rápida carga de la página
  • Accesibilidad para aquellos que no ejecuta JavaScript

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

  • pequeño conjunto de datos
  • más rápido posteriores cargas de la página

Así que si estás paginar por motivos principalmente estéticos, que tiene más sentido para manejarlo lado del cliente. Y si está paginating 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 siguientes tiempos de carga de la página disminuye si utiliza Ajax para cargar las páginas siguientes.

7

Hacerlo en el lado del cliente hará que el usuario descargue todos los datos al principio, lo que podría no ser necesario, 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 página siguiente y agregar la actualización de la página actual utilizando el script del lado del cliente.

+2

Si los tiempos de carga importan, puede ser una buena idea precargar la página siguiente cada vez que se carga una página. Eso daría como resultado tiempos de carga cero a menos que alguien avance dos páginas muy rápidamente. – ThiefMaster

3

lado del servidor - enviar a un cliente lo suficiente el contenido de la vista actual.

5

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

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

Si solo hay unas pocas páginas, agárrelo todo por adelantado y paginar al cliente puede ser una mejor opción.

3

Incluso con datos de tamaños 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 más.

Y para los datos de mayor tamaño que la respuesta es obvia.

2

En un mundo práctico de límites, me página en el lado del servidor para conservar todos los recursos asociados con el envío de los datos.Además, el servidor necesita protegerse de un cliente malicioso/que no funciona y solicita una página ENORME.

Una vez que el código está alegremente avanzando, agregaría "smarts" al cliente para obtener la página "siguiente" y "anterior" y mantener 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 páginas, considere qué tan rápido los datos envejecen (es probable que cambie) y si debe verificar que su página almacenada en caché todavía es válida. Tal vez vuelva a solicitarlo si envejece más de 2 minutos. Tal vez tenga una bandera "sucia". Algo como eso. Espero que esto te sea útil. :)

2

Prefiero la paginación del lado del servidor. Sin embargo, al implementarlo, debe asegurarse de que está optimizando su SQL correctamente. Por ejemplo, creo en MySQL, si usas la opción LIMIT no usa el índice, entonces necesitas reescribir tu sql para usar el índice correctamente.

G-Man

3

¿Quiere decir que el JavaScript tiene todos los datos en la memoria, y muestra una página de un tiempo? ¿O que descarga cada página del servidor como se necesita, usando AJAX?

Si es el último, también puede necesitar pensar en la clasificación. Si ordena usando JavaScript, solo podrá ordenar una página a la vez, lo cual no tiene mucho sentido. Entonces su clasificación debe hacerse en el servidor.

Cuestiones relacionadas