Prestashop est un outil formidable, mais quand il vient à présenter des problèmes de performances, il y a souvent de quoi s’arracher les cheveux.

J’ai récemment été confronté au problème, sur un prestashop 1.5.5.0, qui malgré tous les réglages dans l’admin optimisés (cache, compilation smarty, CCC, etc.) présentait des temps de réponse insatisfaisants.

Après avoir débuggé pendant quelques heures, j’ai pu trouver un bug dans les classes de prestashop, au niveau de la gestion du cache, qui faisait que les requêtes SQL mises en caches n’étaient jamais retrouvées, et étaient donc regénérées à chaque fois.

Le bug se situe au niveau de la gestion des clés du cache, dans le fichier classes/db/Db.php

Vous devez alors chercher la chaine

Cache::getInstance()->get(md5($sql))

Et la remplacer par la chaine

Cache::getInstance()->get(md5(_COOKIE_IV_.$sql))

Le gain de performances n’est pas miraculeux mais quitte à utiliser le système de cache, autant qu’il fonctionne à peu près correctement…

En espérant que cela puisse vous servir, et que Prestashop corrige rapidement dans les prochaines versions !