Optimiser le temps d'affichage avec requête User.all

Ce sujet est résolu
Default
,

Salut à tous !

Voilà je viens vers vous pour une question bête peut-être, mais je vois pas vraiment comment faire pour optimiser. Voilà le topo :

J'utilise sur mon administration le plugin JS DataTable (du coup obligé d'afficher directement une requête full). Enfin bref j'ai 700 utilisateurs et j'affiche simplement le pseudo, l'email et 3 boutons.

Du coup dans mon controller je fais simplement un @users = User.all, mais du coup ma page met ~20 secondes à s'afficher et j'aimerai optimiser ça.

J'ai pensé à un système de cache mais ça ne changerai pas le problème car il y aurai à chaque nouveau user ou modification un moment ou la page remettra 20 secondes à s'afficher.

Connaissez-vous un moyen d'optimiser cet affichage tout en gardant DataTable (utile pour rechercher, trier, etc) ? car pour le moment, le temps de chargement est acceptable mais avec le double ou le triple de donnée ça risque d'être compliqué.

Merci d'avance.

1 Réponse

115904
,

Bonjour @fital,
Je ne sais pas quel moteur SQL tu utilises pour ton système, mais dans tous les cas, il sera surement plus performant pour ton site de charger progressivement les données via AJAX. Je suppose que tu utilises un système de pagination dans ta table (?).
Voici une documentation qui explique bien comment procéder avec JS DataTables:
https://datatables.net/release-datatables/examples/data_sources/server_side.html

Et voici des informations supplémentaires sur les parametres qui sont envoyés via la requete ajax pour renvoyer les bonnes données.
https://datatables.net/manual/server-side

Si tu as d'autres questions, n'hésite pas.

Zevoxs