Pagination: côté serveur ou côté Client?

Quel est le meilleur traitement de la pagination? Côté serveur ou le faire dynamiquement en utilisant javascript?

je travaille sur un projet qui est lourd sur l'ajax et tirant dans les données dynamiquement, donc j'ai travaillé sur un système de pagination javascript qui utilise le dom - mais je commence à penser qu'il serait mieux de gérer tout le côté du serveur.

que pensent les autres?

39
demandé sur Andreas Grech 2009-01-02 23:01:02

8 réponses

La bonne réponse dépend de vos priorités et de la taille de l'ensemble de données à paginé.

la pagination Côté Serveur est la meilleure pour:

  • Grand jeu de données
  • chargement de la page initiale plus rapide
  • accessibilité pour ceux qui n'utilisent pas javascript

la pagination côté Client est la meilleure pour:

  • Petit jeu de données
  • plus rapide page suivante charges

donc si vous paginez pour des raisons principalement esthétiques, il est plus logique de le traiter du côté du client. Et si vous paginez pour réduire le temps de charge initial, côté serveur est le choix évident.

bien sûr, l'avantage du côté du client sur les temps de chargement de page suivants diminue si vous utilisez Ajax pour charger les pages suivantes.

65
répondu Cory House 2009-01-02 20:14:23

en le faisant du côté du client, Votre utilisateur téléchargera toutes les données qui pourraient ne pas être nécessaires, et supprimera le principal avantage de la pagination.

la meilleure façon de le faire pour un tel type D'applications AJAX est de faire appel au serveur AJAX pour la page suivante et Ajouter Mettre à jour la page actuelle en utilisant le script côté client.

7
répondu Mehrdad Afshari 2009-01-02 20:03:50

si vous avez de grandes pages et un grand nombre de pages, vous êtes mieux de demander des pages en morceaux à partir du serveur via AJAX. Alors laissez le serveur faire la pagination, basée sur L'URL de votre requête.

vous pouvez également pré-récupérer les prochaines pages que l'utilisateur verra probablement pour rendre l'interface plus réactive.

s'il n'y a que quelques pages, il est préférable de tout saisir directement et de paginer sur le client.

5
répondu Diodeus - James MacFarlane 2009-01-02 20:10:01

même avec de petites tailles de données, le meilleur choix serait la pagination côté serveur. Vous n'aurez pas à vous inquiéter plus tard si votre application web échelles plus loin.

et pour les données de plus grande taille, la réponse est évidente.

5
répondu user50705 2009-01-02 20:16:46

côté Serveur envoie au client juste assez de contenu pour la vue actuelle.

3
répondu Otávio Décio 2009-01-02 20:08:07

voulez-vous dire que votre JavaScript a toutes les données en mémoire, et montre une page à la fois? Ou qu'il télécharge chaque page du serveur comme il est nécessaire, en utilisant AJAX?

si c'est le dernier, vous pourriez aussi avoir besoin de penser au tri. Si vous triez en utilisant JavaScript, vous ne pourrez trier qu'une page à la fois, ce qui n'a pas beaucoup de sens. Donc votre Tri devrait être fait sur le serveur.

3
répondu JW. 2009-01-02 22:31:52

dans un monde pratique de limites, je page du côté du serveur pour conserver toutes les ressources associées à l'envoi des données. En outre, le serveur doit se protéger contre un client malveillant/dysfonctionnel demandant une page énorme.

une fois que ce code est heureux de passer, j'ajouterais "smarts" au client pour obtenir la page "next" et "précédente" et garder cela en mémoire. Lorsque les pages de l'utilisateur à la page suivante, mettez à jour votre cache.

Si le logiciel client cette sorte de cache de la page, veuillez envisager de façon rapide vos données âges (susceptible de changer) et si vous devez vérifier que votre page en cache de données est toujours valide. Peut-être le redemander s'il dure plus de 2 minutes. Peut-être un "sale" drapeau. Quelque chose comme ça. Espérons que vous trouverez ce utile. :)

2
répondu Sam 2009-01-02 22:03:46

je préfère la pagination côté serveur. Cependant, lors de la mise en œuvre, vous devez vous assurer que vous optimisez votre SQL correctement. Par exemple, je crois en MySQL, si vous utilisez L'option LIMIT elle n'utilise pas l'index alors vous devez réécrire votre sql pour utiliser l'index correctement.

G-Man

2
répondu GeoffreyF67 2009-01-02 22:24:52