Bonjour,

Je suis actuellement en train de créer un fil d'actualité (type réseaux sociaux) sous Symfony 6. J'ai mon entité, mon controller, ma vue... bref tout roule. Mais j'aimerai rendre ça dynamique et optimisé. Si j'ai 500 entrées en DB, je préférerai que les utilisateurs n'aient pas 500 posts à charger sur la page. J'imagine un système de load on scroll, qui chargerai par example les entrées par pack de 15 une fois en bas de page.
Je n'ai pas trouvé de bundle ni de dépot à jour et encore moins sur Symfony. La seule piste que j'ai, c'est d'utiliser KNP Paginator / PagerFanta avec de l'ajax mais je ne suis pas sûr que ce soit l'idéal.

J'aimerai votre avis. N'ayant jamais fait cet exercice auparavant, je ne suis pas sur de quelle approche serait la meilleure.

3 réponses


Bonjour Eckodrake.

Je dirais dans un premier temps d'optimiser toutes t'es données que tu charges dans ta page.
Exemple : Sur ta page tu n'affiche que les noms d'utilisateurs. Mais tu renvoie toute l'entité User à ton template. Donc ne garder que les données intéréssantes dans un tableau.

Ensuite Gérer t'es requête doctrine et vérifier que tu n'en a pas des milliers. Gérer éventuellement avec les fetch "Eager" et "Lazy"

Et sinon oui faire de la pagination.

Sinon installer react sur le projet via "webpack" pourrait être une bonne idée.

Salut SiProdZz,

Merci pour les conseils. Effectivement, je suis en train de nettoyer mes requêtes à coup de Eager et autre hydratation (justement avec le tuto Grafikart sur le problème n+1).
Pour les données à renvoyer, je n'y avais pas pensé, bien que tout semble me diriger dans ce sens : le test que j'ai fait pour le moment en ajax renvoie non pas l'entité User mais un tableau avec le strict minimum dont j'ai besoin. Comme quoi.

Je n'ai aucune expérience en react, je vais me pencher sur la question tout de même !

Je ne sais pas à quel rythme va t'es postes. Mais le react serait peut-être la dernière solution, car si tu as d'autres projets identique, cela pourrait être une bonne idée.

Sinon je ne me rend pas compte des tes posts. Mais tu pourrai faire autrement.

  • Ne pas afficher plus de 300 posts sur la page (j'imagine mal des gens scroller 300 posts, enfin peut-être)
  • Dépassé une certaine date ( si le poste a plus d'1 an. On ne l'affiche pas).

En tout cas bon courage, et n'hésite pas à reposter t'as solution par curiosité, ça pourrait m'aider à l'avenir :)