Effet de bord / critères 'recherche' + 'plat' + webperf / réutilisation des résultats
- Les résultats des boucles avec
{recherche}
sont stockés globalement. Ce stockage est unique qu'il y ait ou non le modificateur de boucle{plat}
, or sans 'plat' ce sont les id_thread qui sont résultats, et avec 'plat' ce sont les id_forums.
De ce fait, quand plusieurs boucles avec le critère {recherche}
se suivent dans un même squelette ou dans des squelettes inclus statiquement, c'est la présence ou non du critère {plat}
dans la dernière boucle exécutée qui écrase les résultats précédents, et toutes les boucles de recherche renverront ses résultats.
Ce pb a été découvert avec #4737 (closed) (c'est expliqué dans ce commentaire. #4737 (closed) a été réglé en mettant plat partout. Une autre résolution (dans ce cas en tout cas) aurait été de remplacer les inclusions statiques par des dynamiques. Mais l'effet de bord dans la gestion des résultats de recherche reste là.
- Au passage, on voit que puisqu'il y a écrasement, c'est que la même recherche est faite successivement par toutes les boucles en ayant besoin lors d'un même calcul de page, sans utiliser le résultat mis en cache dans spip_recherches par la première boucle. Or, c'est un même hit qui en a besoin et on peut considérer que la BDD n'a pas changé.
Il faudrait faire en sorte que le résultat obtenu par la 1ère boucle soit réutilisé par les boucles suivantes.