PrestaShop n'est pas lent par nature. Une boutique PrestaShop 1.7 ou 8.x bien configuree, avec un catalogue de produits raisonnable et une selection de modules sensee, se charge en moins de deux secondes. Mais la plupart des boutiques ne sont pas bien configurees, portent des annees de ballast de modules accumules et fonctionnent sur un hebergement choisi pour le prix plutot que pour la performance. Voyons ce qui cause reellement la lenteur et ce que vous pouvez raisonnablement faire pour chaque cause.

Comment mesurer avant de corriger

Avant de changer quoi que ce soit, etablissez une reference. Vous ne pouvez pas ameliorer ce que vous ne mesurez pas.

  • TTFB (Time to First Byte) : C'est le temps entre l'envoi d'une requete par le navigateur et la reception du premier octet de la reponse. Cela mesure la performance cote serveur. Pour PrestaShop, un TTFB sain est inferieur a 300ms. Si votre TTFB depasse 1 seconde, votre serveur ou votre application a un probleme significatif.
  • Chargement complet de la page : Le temps total jusqu'a ce que la page soit visuellement complete et interactive. Moins de 3 secondes, c'est bien, moins de 2 secondes, c'est excellent.
  • Google PageSpeed Insights : Vous donne a la fois des donnees de laboratoire et des donnees d'utilisateurs reels. Concentrez-vous sur les Core Web Vitals — LCP (Largest Contentful Paint), FID/INP (Interaction to Next Paint) et CLS (Cumulative Layout Shift).

Testez votre page d'accueil, une page de categorie avec de nombreux produits et une page produit. Les problemes de performance se manifestent souvent sur des types de pages specifiques, pas partout de maniere egale.

La base de donnees : ou se cachent la plupart des problemes

D'apres notre experience, la base de donnees est la source la plus courante des problemes de performance PrestaShop. Voici pourquoi :

Index manquants

Le noyau PrestaShop cree les index de base de donnees necessaires lors de l'installation. Mais les modules creent souvent des tables sans index appropriees, et avec le temps, ces tables deviennent volumineuses. Une requete qui est instantanee sur une table de 1 000 lignes devient douloureusement lente sur une table de 1 000 000 de lignes s'il n'y a pas d'index sur les colonnes utilisees dans les clauses WHERE ou JOIN.

Verifiez votre journal des requetes lentes. Si vous voyez la meme table apparaitre de maniere repetee, verifiez si elle possede des index appropries pour les requetes qui y sont executees.

Tables surdimensionnees

Plusieurs tables PrestaShop croissent continuellement et sont rarement nettoyees :

  • ps_connections et ps_connections_source : Suivent chaque connexion visiteur. Sur une boutique frequentee, ces tables peuvent avoir des millions de lignes. PrestaShop les interroge pour les statistiques, mais elles ont rarement besoin de plus de 90 jours de donnees.
  • ps_log : Journaux d'application qui croissent indefiniment. Peuvent etre tronques periodiquement en toute securite.
  • ps_cart : Chaque panier abandonne est stocke pour toujours. Les anciens paniers d'il y a des annees ne servent a rien mais ralentissent les requetes liees au panier.
  • ps_guest : Enregistrements de visiteurs invites qui s'accumulent au fil des annees.
  • ps_pagenotfound : Enregistre chaque erreur 404. Peut devenir enorme sur les boutiques avec de nombreux liens casses ou du trafic de bots.

Requetes couteuses des modules

Certains modules executent des requetes de base de donnees lourdes a chaque chargement de page. Les modules d'analyse qui comptent les visiteurs, les modules de gestion de stock qui verifient l'inventaire en temps reel et les modules de vente croisee qui calculent les relations entre produits — chacun peut ajouter 50 a 200ms a chaque requete. Multipliez cela par 10 modules faisant la meme chose et vous avez une seconde complete de temps de base de donnees avant meme que le contenu de la page ne soit genere.

Les modules : la plus grande variable de performance

La difference entre une boutique PrestaShop rapide et une lente, ce sont generalement les modules. Voici ce qu'il faut surveiller :

Trop de hooks

Chaque module qui s'accroche a displayHeader, displayFooter, displayTop ou actionFrontControllerSetMedia s'execute a chaque chargement de page. Si vous avez 30 modules accrochees a ces positions, ce sont 30 fonctions PHP qui s'executent avant que la page ne puisse etre rendue. Certaines de ces fonctions peuvent etre legeres, mais d'autres peuvent charger des configurations, executer des requetes de base de donnees ou inclure des fichiers externes.

Appels API externes

Les modules qui appellent des API externes a chaque chargement de page sont des tueurs de performance. Un calculateur de frais d'expedition qui appelle l'API du transporteur sur la page produit. Un convertisseur de devises qui recupere les taux en direct. Un widget de reseaux sociaux qui extrait des donnees de Facebook ou Instagram. Chaque appel externe ajoute de la latence reseau — souvent 200 a 500ms — et si le service externe est lent ou en panne, toute votre page attend.

La solution est la mise en cache. Toutes les donnees recuperees d'une source externe doivent etre mises en cache localement et actualisees selon un calendrier (tache cron), et non a chaque chargement de page.

Modules redondants

De nombreuses boutiques ont plusieurs modules qui font des choses similaires. Deux modules SEO, trois trackers d'analyse, deux bannieres de consentement aux cookies — chacun ajoutant de la surcharge. Auditez vos modules installes et supprimez les doublons. Un seul module SEO bien choisi surpassera trois concurrents qui se disputent les memes balises meta.

L'hebergement : la fondation

L'hebergement mutualise ne suffit generalement pas

PrestaShop sur un hebergement mutualise bon marche, c'est comme gerer un restaurant dans une cabine telephonique. Ca fonctionne techniquement jusqu'a ce que vous ayez plus de deux clients. L'hebergement mutualise signifie partager le CPU, la RAM et les E/S disque avec des dizaines d'autres sites. Quand votre voisin sur le serveur lance une sauvegarde lourde, votre boutique ralentit.

Au minimum, une boutique PrestaShop serieuse a besoin de :

  • Un VPS ou serveur dedie avec au moins 2 Go de RAM (4 Go+ recommande)
  • Stockage SSD (pas de disques rotatifs)
  • PHP 8.1 ou ulterieur avec OPcache active
  • MySQL 8.0 ou MariaDB 10.6+ avec des tampons correctement ajustes

Configuration PHP

Le parametre PHP le plus impactant pour PrestaShop est OPcache. OPcache stocke le bytecode PHP compile en memoire, eliminant la necessite d'analyser les fichiers PHP a chaque requete. Un OPcache correctement configure peut ameliorer le TTFB de 30 a 50%.

Parametres OPcache cles :

  • opcache.enable=1
  • opcache.memory_consumption=256 (Mo — PrestaShop avec des modules peut facilement utiliser 128 Mo+)
  • opcache.max_accelerated_files=20000
  • opcache.validate_timestamps=0 en production (necessite un vidage manuel du cache apres les deployements)

Optimisation MySQL

La configuration MySQL par defaut est concue pour un petit serveur avec un minimum de memoire. Pour une boutique PrestaShop, les parametres les plus importants a ajuster :

  • innodb_buffer_pool_size — devrait representer 50 a 70% de la RAM disponible sur un serveur de base de donnees dedie, ou au moins 512 Mo sur un serveur mutualise
  • query_cache_type=0 — le cache de requetes MySQL est obsolete et nuit en fait aux performances sur les charges de travail a forte ecriture comme le e-commerce
  • innodb_flush_log_at_trx_commit=2 — compromis acceptable entre performance et durabilite pour la plupart des boutiques

Cache integre de PrestaShop

PrestaShop dispose de plusieurs mecanismes de cache integres que de nombreux proprietaires de boutiques ne configurent jamais correctement :

  • Cache Smarty : Cache de compilation de templates. Devrait toujours etre active en production (Forcer la compilation : Non dans les parametres de performance).
  • CCC (Combine, Compress, Cache) : Combine et minifie les fichiers CSS et JavaScript, reduisant le nombre de requetes HTTP. Activez-le dans Performance > CCC.
  • Cache de page : La mise en cache de page complete peut ameliorer considerablement les performances pour les visiteurs anonymes. Non integre au noyau PrestaShop mais disponible via des modules.
  • Cache d'objets : PrestaShop peut utiliser Redis ou Memcached pour mettre en cache les resultats des requetes de base de donnees. C'est l'un des changements les plus impactants que vous puissiez faire si votre base de donnees est le goulot d'etranglement.

Une checklist de performance realiste

Si votre boutique est lente, suivez ces etapes dans l'ordre :

  1. Mesurez votre TTFB actuel et vos temps de chargement de page. Notez-les.
  2. Activez OPcache s'il n'est pas deja active.
  3. Activez le cache Smarty (desactivez la compilation forcee).
  4. Activez CCC pour CSS et JavaScript.
  5. Auditez vos modules — desactivez ou supprimez tout ce que vous n'utilisez pas activement.
  6. Verifiez votre base de donnees pour les tables surdimensionnees et nettoyez-les.
  7. Ajoutez Redis ou Memcached pour le cache d'objets si disponible sur votre hebergement.
  8. Examinez votre journal des requetes lentes et ajoutez les index manquants.
  9. Mesurez a nouveau. Comparez avec votre reference.
  10. Si toujours lent, envisagez de mettre a niveau votre hebergement.

La plupart des boutiques verront une amelioration de 50 a 70% du TTFB rien qu'avec les etapes 2 a 6. Vous n'avez pas besoin de solutions exotiques — vous avez besoin que les bases soient correctement mises en place.

La performance n'est pas une correction ponctuelle. A mesure que vous ajoutez des produits, installez des modules et que votre base de clients grandit, remesurez et reoptimisez periodiquement. Une boutique qui etait rapide avec 500 produits peut avoir besoin d'attention quand elle atteint 5 000. Integrer la surveillance des performances dans votre routine — meme une verification rapide une fois par trimestre — previent le ralentissement progressif qui surprend de nombreux proprietaires de boutiques.

Articles Connexes

  • Nettoyage de base de données : pourquoi votre boutique PrestaShop ralentit avec le temps
  • Votre boutique est-elle lente ? Comment vérifier et que faire
  • Cache Redis pour PrestaShop : installation et gains de performance
Partager cet article:
David Miller

David Miller

Plus d'une décennie d'expertise pratique PrestaShop. David développe des modules e-commerce haute performance axés sur le SEO, l'optimisation du passage en caisse et la gestion de boutique. Passionné par le code propre et les résultats mesurables.

Cet article vous a plu ?

Recevez nos derniers conseils, guides et mises à jour de modules dans votre boîte mail.

Commentaires

Aucun commentaire pour le moment. Soyez le premier !

Soyez le premier à poser une question ou à partager un retour utile.

Chargement...
Retour en haut