Votre boutique PrestaShop met trop de temps à charger
Une boutique lente ne se règle pas en changeant d’hébergement au hasard. La lenteur vient presque toujours d’un point précis : requêtes SQL non indexées, cache Smarty mal configuré, ou un module qui exécute du code inutile sur chaque page.
Comment je mesure avant d’intervenir
-
Profilage de la page
J’active le débogueur de performance pour lister les requêtes SQL exécutées sur une page donnée, leur nombre et leur temps d’exécution. Une fiche produit qui déclenche plus de 200 requêtes n’est pas normale.
-
Vérification du cache
Je contrôle l’état du cache Smarty (compilation et cache de rendu) et, sur PrestaShop 1.6, l’activation de la combinaison et compression CSS/JS (CCC).
-
Analyse des index MySQL
Je regarde les requêtes lentes côté base et j’ajoute les index manquants sur les tables les plus sollicitées, typiquement ps_product, ps_product_attribute et ps_category_product.
-
Audit des modules
Je repère les modules qui s’accrochent à des hooks exécutés sur chaque page (displayHeader, actionFrontControllerSetMedia) et qui font des appels externes ou des requêtes non nécessaires.
-
Vérification serveur
Je vérifie la présence d’OPcache, la version PHP utilisée et si un système de cache mémoire (Redis ou Memcached) est disponible pour remplacer le cache fichier par défaut.
Site PrestaShop lent : le serveur ou le navigateur ?
Avant de corriger quoi que ce soit, il faut savoir si le temps se perd sur le serveur ou dans le navigateur. Ouvrez les outils de développement du navigateur, onglet Réseau, et regardez la première ligne : le temps d’attente de la réponse du serveur, le TTFB.
- TTFB élevé, au-delà d’une seconde environ : le serveur met du temps à fabriquer la page. La cause est en PHP, en base de données ou dans un module, et c’est l’objet de cette page.
- TTFB correct mais page longue à s’afficher : le serveur répond vite, le navigateur peine ensuite. Images trop lourdes, scripts tiers (messagerie, avis, suivi publicitaire), polices et JavaScript non différés : c’est un travail sur le front, pas sur le serveur.
- Seul le back-office est lent : regardez les listes de commandes, de produits ou de clients sur de gros volumes, les modules du tableau de bord, et la taille des tables de statistiques comme
ps_connections,ps_guestoups_pagenotfound, qui grossissent sans limite quand rien ne les purge.
Les réglages oubliés qui ralentissent toute la boutique
Une part étonnante des boutiques lentes que je vois n’ont aucun problème de code : un réglage de dépannage est resté actif.
_PS_MODE_DEV_laissé àtruedansconfig/defines.inc.phpaprès une intervention. Sur 1.7, 8 et 9, il fait aussi tourner le back-office dans l’environnement de développement de Symfony, nettement plus lent._PS_DEBUG_PROFILING_activé : chaque page calcule et affiche son propre profil, ce qui a un coût à chaque affichage.- Dans Paramètres avancés > Performances, la compilation des templates réglée sur « Forcer la compilation » : Smarty recompile les gabarits à chaque affichage au lieu de les réutiliser.
- Le cache désactivé dans ce même écran, parfois pour « voir une modification » et jamais réactivé.
Ces quatre points se vérifient en quelques minutes et ne demandent aucun développement. Ils passent avant toute conclusion sur l’hébergement.
Les signaux qui justifient un audit
- Fiche produit ou page catégorie qui met plus de 3 secondes à s’afficher
- Back-office qui devient lent dès que le catalogue dépasse quelques milliers de références
- Ralentissement progressif au fil des mois sans changement apparent
- Pic de lenteur uniquement pendant les périodes de forte affluence
- Score PageSpeed ou Core Web Vitals mauvais malgré un hébergement correct
Ce que je corrige le plus souvent
Le cache fichier par défaut de PrestaShop (var/cache) tient très bien sur un catalogue de quelques centaines de produits, mais devient un goulot d’étranglement sur un gros catalogue avec beaucoup de trafic simultané, car chaque écriture de cache verrouille le disque. Passer sur un cache mémoire change souvent la donne sans toucher au code.
Côté base de données, l’absence d’index sur les colonnes utilisées dans les jointures (id_product, id_shop, id_lang) fait exploser le temps de réponse dès que le catalogue grossit, alors que la même page reste rapide en environnement de test avec peu de données.
Enfin, certains modules de recommandation, de tracking marketing ou de génération de PDF exécutent du code lourd sur chaque affichage de page, y compris quand la fonctionnalité n’est pas utilisée à ce moment-là. Je les identifie via le débogueur de hooks et je propose soit une désactivation conditionnelle, soit un passage en tâche asynchrone.
Pages liées
-
Diagnostiquer une boutique lente
La méthode de mesure pas à pas, avant de toucher à quoi que ce soit.
-
Les modules qui ralentissent la boutique
Repérer les modules qui s’exécutent sur chaque page sans raison.
-
Performance d’un gros catalogue PrestaShop
Ce qui change au-delà de plusieurs dizaines de milliers de références.
-
Site lent du jour au lendemain
Quand le ralentissement a une date précise, la cause aussi.
-
Filtres de catégorie disparus
La recherche à facettes et son index, souvent en cause sur les pages catégorie.
-
Refaire le site pour la lenteur ?
Rarement la bonne réponse : ce qu’une refonte règle, et ce qu’elle reproduit.
Décrivez votre besoin en 1 minute
Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.