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?
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.
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.
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.
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.
côté Serveur envoie au client juste assez de contenu pour la vue actuelle.
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.
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. :)
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