YesWiki / yeswiki-extension-twolevels

GNU Affero General Public License v3.0
0 stars 1 forks source link

Les filtres d'un champ de 2ème niveau mettent 5 secondes à s'afficher #2

Open acheype opened 9 months ago

acheype commented 9 months ago

Quand je clique je coche une option d'un filtre d'un premier niveau, pour certaines entrées, le filtre de niveau 2 met 5 secondes à s'afficher. C'est problématique.

Ce qui est étrange c'est que ça ne le fait pas pour toutes les options du filtre. Par exemple, dans l'exemple du site que je donne, cela le fait que quand on coche "Education/formation", "Transition écologique" ou "Vie sociale / vie de quartier". Aussi c'est quand on le fait dès la première sélection, si une autre sélection est faite avant, il n'y a pas ce soucis de lenteur d'affichage.

Voici un lien où cela le fait et où le filtrage est déjà activé avec l'URL : https://dev.wikilleurbanne.fr/?AnnuAire#checkboxfiche8bf_categories=DOMINTERVD Ce qui est encore plus bizarre pour ce filtrage là, c'est que si on lance la page sans filtre activée et qu'on clique sur ce filtre, le chargement se fait direct ! Pour les deux autres cas ('"Transition écologique" ou "Vie sociale / vie de quartier"), ça le fait à la fois quand on charge la page avec le filtrage déjà activé mais également quand on charge la page sans filtrage et qu'on vient manuellement faire le filtrage.

@J9rem

J9rem commented 9 months ago

merci @acheype pour ce retour.

Le comportement que tu annonces est attendu car le chargement de l'association niveau vers niveau 2 se fait à la demande lors du clic sur le filtre (et parfois, ce chargement peut être plus rapide s'il n'y a que 3 fiches ou fait en arrière plan si l'url active le filtre).

Je pense que c'est pas une issue de catégorie bug mais plutôt enhancement. Je comprends la gêne qu'il peut y avoir à attendre 5 secondes. Après, c'est la question entre optimisation du temps de chargement et volume de données systématiquement échangées, ... le curseur semble moins optimal pour votre site.

acheype commented 9 months ago

En effet, c'est dû au fait que j'ai 700 fiches. Avec quelques fiches, cela ne se produirait pas. (j'ai passé à "enhancement")

Le soucis vient déjà du fait que les facettes doivent traiter toutes les données et ne charge pas seulement les listes ou fiches qui représentes ces catégories. Mais étant donné que les fiches s'affichent assez rapidement, on dirait que du côté des facettes c'est bcp moins bien optimisé. Comme si, les facettes relançaient de nouvelles requêtes pour charger l'ensemble des données... Est-ce le cas ?

Ce qui est encore plus bizarre pour ce filtrage là, c'est que si on lance la page sans filtre activée et qu'on clique sur ce filtre, le chargement se fait direct !

Je m'étais emmêlé les pinceaux dans mes tests. En fait, avec ce filtrage là, ça met également 5 secondes à ce que le filtre de niveau 2 s'affiche. C'est juste que je devais voir que les fiches se mettaient à jour directement quand on clique, mais le filtre de niveau 2 ne s'affiche pas à ce moment là.

J9rem commented 9 months ago

Comme si, les facettes relançaient de nouvelles requêtes pour charger l'ensemble des données... Est-ce le cas ?

Oui car il n'est pas possible d'avoir les données en mémoire vive complète avec le premier jet. Le fonctionnement est plus optimal quand le niveau 1 est une fiche qui contient un checkbox vers le niveau 2. Dans ce cas, il n'y a normalement que les fiches nécessaires qui sont chargées. Dans les autres cas, il y a chargement de toutes les fiches pour créer les liens.

acheype commented 9 months ago

Voici d'autres tests qui pourront t'aider à mieux comprendre ce qu'il se passe @J9rem.

En regardant du plus près le chargement de la page, on remarque que chaque fiche "catégorie" (c'est le niveau 1) est chargée, une à une via l'API : 2023-11-24 01-08 - Capture d'écran

On voit bien chacun des requêtes s'exécuter et la dernière met quasi 4 secondes à s'exécuter.

J'imagine qu'en remplaçant l'appel un à un par une requête qui vient récupérer l'ensemble des fiches devrait déjà améliorer grandement les performances (pour info, les 700 fiches asso mettent 2 sec environ à se charger avec une seule requête, vs les fiches catégories 4 sec avec 11 requêtes)

Et ensuite, je vois que ces requêtes commencent uniquement quand l'ensemble des données ont été requetées (donc après les 2 sec du chargement des fiches asso)