[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$f17VFMy634MGh33vrwkZP1JDV7DcLq4CEo5EVmvZfRSY":22,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":61,"header-db":142,"megamenu":156,"footer-db":211,"$fi0L8wBkIlyemSXxoPDAJBO8-ogrK6Mv4biWNucDwyyA":227},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"title":23,"slug":24,"metaDescription":25,"category":26,"tags":27,"difficulty":34,"psVersions":35,"content":39,"faq":40,"tldr":56,"readingTime":57,"generatedAt":58,"publishDate":58,"relatedArticles":59,"sourceCategory":60},"Diagnostiquer et résoudre la lenteur d'un site PrestaShop","diagnostiquer-resoudre-lenteur-site-prestashop","Guide complet pour identifier les causes de lenteur sur PrestaShop : debug profiling, analyse des requêtes SQL, table ps_configuration et optimisations clés.","performance",[26,28,29,30,31,32,33],"debug","profiling","optimisation","requêtes SQL","ps_configuration","temps de chargement","intermediaire",[36,37,38],"1.6","1.7","8.x","\u003Ch2>Introduction\u003C\u002Fh2>\n\u003Cp>Un site PrestaShop qui met plusieurs secondes à charger, c'est un signal d'alarme à ne pas ignorer. Au-delà de l'expérience utilisateur dégradée, la lenteur impacte directement votre référencement (Core Web Vitals) et votre taux de conversion. Un temps de réponse HTML supérieur à 2-3 secondes indique un problème côté serveur qu'il faut diagnostiquer méthodiquement.\u003C\u002Fp>\n\u003Cp>Dans cet article, je vous présente ma méthode complète pour identifier et corriger les causes de lenteur sur PrestaShop, de l'analyse réseau jusqu'à l'optimisation des requêtes SQL.\u003C\u002Fp>\n\u003Ch2>Étape 1 : Mesurer objectivement le temps de réponse\u003C\u002Fh2>\n\u003Cp>Avant toute intervention, il faut quantifier le problème. Ouvrez les outils de développement de votre navigateur (F12), onglet \u003Cstrong>Réseau\u003C\u002Fstrong>, puis rechargez votre page.\u003C\u002Fp>\n\u003Cp>Concentrez-vous sur la première requête (le document HTML) et observez la colonne \u003Cstrong>Temps\u003C\u002Fstrong> ou \u003Cstrong>Durée\u003C\u002Fstrong>. Un temps de téléchargement HTML supérieur à 500 ms au second chargement (cache navigateur actif) révèle un problème côté serveur.\u003C\u002Fp>\n\u003Ch3>Ce qu'il faut regarder\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>**TTFB (Time To First Byte)** : le temps avant que le serveur commence à répondre. Au-delà de 800 ms, c'est problématique.\u003C\u002Fli>\n\u003Cli>**Temps de téléchargement total du HTML** : inclut le TTFB + le transfert. Au-delà de 1-2 secondes, il y a un goulet d'étranglement.\u003C\u002Fli>\n\u003Cli>**Nombre de requêtes** : un excès de fichiers CSS\u002FJS (souvent causé par des modules) ralentit le rendu.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Vous pouvez également utiliser \u003Ccode>curl\u003C\u002Fcode> en ligne de commande pour une mesure précise :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">\ncurl -o \u002Fdev\u002Fnull -s -w \"TTFB: %{time_starttransfer}s\\nTotal: %{time_total}s\\n\" https:\u002F\u002Fvotre-site.com\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Étape 2 : Activer le Debug Profiling de PrestaShop\u003C\u002Fh2>\n\u003Cp>Le profiling intégré à PrestaShop est l'outil le plus puissant pour identifier les modules et requêtes SQL responsables de la lenteur.\u003C\u002Fp>\n\u003Ch3>Sur PrestaShop 1.6\u003C\u002Fh3>\n\u003Cp>Éditez le fichier \u003Ccode>config\u002Fdefines.inc.php\u003C\u002Fcode> et modifiez la constante :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\ndefine('_PS_DEBUG_PROFILING_', true);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Sur PrestaShop 1.7 et 8.x\u003C\u002Fh3>\n\u003Cp>La méthode a évolué. Éditez le même fichier \u003Ccode>config\u002Fdefines.inc.php\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\ndefine('_PS_DEBUG_PROFILING_', true);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Sur PrestaShop 8.x, vous pouvez également utiliser la \u003Cstrong>Debug Toolbar Symfony\u003C\u002Fstrong> en activant le mode debug dans \u003Ccode>.env\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-\">\nAPP_DEBUG=1\nAPP_ENV=dev\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\u003Cp>\u003Cstrong>⚠️ Important\u003C\u002Fstrong> : activez le profiling uniquement en environnement de développement ou après avoir mis votre site en maintenance. Le profiling ralentit considérablement le site et expose des informations techniques sensibles.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch3>Interpréter les résultats du profiling\u003C\u002Fh3>\n\u003Cp>Une fois activé, rechargez n'importe quelle page de votre boutique. Un tableau détaillé s'affiche en bas de page avec :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>**Les hooks et modules** : temps d'exécution de chaque module sur chaque hook. Un module qui prend plus de 100 ms sur un hook est suspect.\u003C\u002Fli>\n\u003Cli>**Les requêtes SQL** : liste complète avec le temps d'exécution de chacune. Triez par durée pour identifier les requêtes lentes.\u003C\u002Fli>\n\u003Cli>**La mémoire consommée** : pic de consommation PHP.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Recherchez en priorité :\u003C\u002Fp>\n\u003Col>\n\u003Cli>Les modules dont le temps cumulé dépasse 200 ms\u003C\u002Fli>\n\u003Cli>Les requêtes SQL sans index (temps > 50 ms)\u003C\u002Fli>\n\u003Cli>Les requêtes dupliquées (même requête exécutée des dizaines de fois)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Étape 3 : Vérifier la table ps_configuration\u003C\u002Fh2>\n\u003Cp>Un bug bien connu de PrestaShop 1.6.1.x (et qui peut persister lors de migrations vers 1.7\u002F8.x) provoque une inflation anormale de la table \u003Ccode>ps_configuration\u003C\u002Fcode>. Cette table, normalement limitée à quelques centaines de lignes, peut atteindre plusieurs dizaines de milliers d'entrées parasites.\u003C\u002Fp>\n\u003Ch3>Diagnostiquer le problème\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-sql\">\nSELECT COUNT(*) FROM ps_configuration;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Si le résultat dépasse 1 000 à 1 500 lignes, il y a probablement un problème. Identifiez les entrées suspectes :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sql\">\nSELECT name, COUNT(*) as nb\nFROM ps_configuration\nGROUP BY name\nHAVING nb &gt; 5\nORDER BY nb DESC;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Nettoyer les doublons\u003C\u002Fh3>\n\u003Cp>La table \u003Ccode>ps_configuration\u003C\u002Fcode> est chargée intégralement en mémoire à chaque requête PHP. Des milliers de lignes superflues impactent donc chaque page.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sql\">\n-- Sauvegarde préalable OBLIGATOIRE\nCREATE TABLE ps_configuration_backup AS SELECT * FROM ps_configuration;\n\n-- Suppression des doublons en conservant la dernière valeur\nDELETE c1 FROM ps_configuration c1\nINNER JOIN ps_configuration c2\nWHERE c1.id_configuration &lt; c2.id_configuration\nAND c1.name = c2.name;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\u003Cp>\u003Cstrong>Conseil\u003C\u002Fstrong> : faites toujours un dump complet de votre base avant ce type d'opération.\u003C\u002Fp>\u003C\u002Fblockquote>\n\u003Ch2>Étape 4 : Autres causes fréquentes de lenteur\u003C\u002Fh2>\n\u003Ch3>Modules gourmands\u003C\u002Fh3>\n\u003Cp>Désactivez temporairement vos modules tiers un par un (en commençant par les modules de statistiques, de filtres produits et de SEO) pour mesurer l'impact de chacun sur le TTFB.\u003C\u002Fp>\n\u003Ch3>Cache PrestaShop désactivé\u003C\u002Fh3>\n\u003Cp>Vérifiez dans \u003Cstrong>Paramètres avancés > Performances\u003C\u002Fstrong> :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>**Cache Smarty** : Activé, en mode \"Ne jamais recompiler\"\u003C\u002Fli>\n\u003Cli>**Concaténation CCC** : CSS et JS concaténés et minifiés\u003C\u002Fli>\n\u003Cli>**Cache serveur** : Activez Memcached ou Redis si disponible\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Sur PrestaShop 8.x, la configuration du cache Symfony est également importante :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-yaml\">\n# config\u002Fpackages\u002Fprod\u002Fframework.yaml\nframework:\n    cache:\n        app: cache.adapter.redis\n        # ou cache.adapter.memcached\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Configuration PHP\u003C\u002Fh3>\n\u003Cp>Vérifiez votre configuration PHP, notamment :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-ini\">\n; php.ini recommandé pour PrestaShop\nmemory_limit = 512M\nmax_execution_time = 300\nopcache.enable = 1\nopcache.memory_consumption = 256\nopcache.max_accelerated_files = 20000\nopcache.validate_timestamps = 0  ; en production uniquement\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>L'activation d'OPcache seule peut réduire le TTFB de 30 à 50 %.\u003C\u002Fp>\n\u003Ch3>Base de données mal optimisée\u003C\u002Fh3>\n\u003Cp>Lancez une optimisation des tables :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sql\">\n-- Identifier les tables fragmentées\nSELECT TABLE_NAME, DATA_FREE, ENGINE\nFROM information_schema.TABLES\nWHERE TABLE_SCHEMA = 'votre_base'\nAND DATA_FREE &gt; 1048576\nORDER BY DATA_FREE DESC;\n\n-- Optimiser les tables fragmentées\nOPTIMIZE TABLE ps_cart, ps_connections, ps_guest, ps_log, ps_statssearch;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Tables de logs et statistiques surdimensionnées\u003C\u002Fh3>\n\u003Cp>Les tables de statistiques PrestaShop grossissent indéfiniment et ne sont jamais purgées automatiquement :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sql\">\n-- Vérifier la taille des tables problématiques\nSELECT TABLE_NAME, \n       ROUND((DATA_LENGTH + INDEX_LENGTH) \u002F 1024 \u002F 1024, 2) AS taille_mb\nFROM information_schema.TABLES\nWHERE TABLE_SCHEMA = 'votre_base'\nORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC\nLIMIT 20;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Les tables \u003Ccode>ps_connections\u003C\u002Fcode>, \u003Ccode>ps_connections_source\u003C\u002Fcode>, \u003Ccode>ps_guest\u003C\u002Fcode>, \u003Ccode>ps_log\u003C\u002Fcode> et \u003Ccode>ps_statssearch\u003C\u002Fcode> peuvent souvent être purgées sans impact fonctionnel.\u003C\u002Fp>\n\u003Ch2>Étape 5 : Mesurer l'amélioration\u003C\u002Fh2>\n\u003Cp>Après chaque correction, mesurez à nouveau le TTFB pour quantifier le gain. Documentez vos résultats pour identifier les actions les plus efficaces. Visez un TTFB inférieur à 300 ms et un temps de chargement total sous les 2 secondes.\u003C\u002Fp>\n\u003Ch2>Récapitulatif de la méthode\u003C\u002Fh2>\n\u003Col>\n\u003Cli>**Mesurer** : outils navigateur + curl pour objectiver le problème\u003C\u002Fli>\n\u003Cli>**Profiler** : activer `_PS_DEBUG_PROFILING_` pour identifier les coupables\u003C\u002Fli>\n\u003Cli>**Vérifier** : table `ps_configuration`, modules lents, cache désactivé\u003C\u002Fli>\n\u003Cli>**Optimiser** : purger les tables, activer OPcache, configurer Redis\u003C\u002Fli>\n\u003Cli>**Valider** : re-mesurer et confirmer l'amélioration\u003C\u002Fli>\n\u003C\u002Ful>",[41,44,47,50,53],{"q":42,"a":43},"Comment savoir si mon site PrestaShop est trop lent ?","Utilisez les outils développeur de votre navigateur (F12 > onglet Réseau) et observez le temps de téléchargement du document HTML. Un TTFB (Time To First Byte) supérieur à 800 ms ou un temps total dépassant 2 secondes au second chargement indique un problème serveur à investiguer. Vous pouvez aussi utiliser Google PageSpeed Insights ou la commande curl pour des mesures précises.",{"q":45,"a":46},"Le debug profiling de PrestaShop est-il dangereux en production ?","Oui, il ne faut jamais laisser le profiling activé en production. Il ralentit considérablement le site (chaque requête est instrumentée), expose des informations techniques sensibles (requêtes SQL, chemins serveur, configuration) et consomme davantage de mémoire. Activez-le uniquement en maintenance ou sur un environnement de développement, le temps du diagnostic.",{"q":48,"a":49},"Pourquoi ma table ps_configuration contient des milliers de lignes ?","Un bug identifié sur PrestaShop 1.6.1.x provoquait la duplication massive d'entrées dans ps_configuration. Cette table est chargée en mémoire à chaque requête PHP, donc des milliers de lignes superflues impactent les performances de toutes les pages. Vérifiez le nombre de lignes avec COUNT(*) et nettoyez les doublons après avoir effectué une sauvegarde complète de la base.",{"q":51,"a":52},"Quels modules PrestaShop ralentissent le plus souvent le site ?","Les modules de statistiques intégrés (dashactivity, statsdata), les modules de filtres produits mal optimisés, les modules SEO qui exécutent de nombreuses requêtes SQL par page, et les modules de réseaux sociaux chargeant des scripts externes sont les coupables les plus fréquents. Le profiling permet d'identifier précisément quel module consomme le plus de temps sur chaque hook.",{"q":54,"a":55},"Redis ou Memcached : quel cache choisir pour PrestaShop ?","Redis est généralement le meilleur choix pour PrestaShop 8.x. Il offre la persistance des données (survit aux redémarrages), supporte des structures de données plus riches, et sert à la fois de cache applicatif et de stockage de sessions. Memcached reste pertinent pour du cache pur si vous n'avez pas besoin de persistance. Dans les deux cas, le gain de performance par rapport au cache fichier est significatif.","Pour diagnostiquer la lenteur d'un site PrestaShop, mesurez le TTFB via les outils navigateur, activez le debug profiling pour identifier les modules et requêtes SQL lents, puis vérifiez la table ps_configuration qui peut être anormalement gonflée suite à un bug connu de PrestaShop 1.6.",6,"2026-03-21T16:29:06.000Z",[],"PrestaShop pour les développeurs",{"columns":62},[63,79,109,130],{"title":64,"links":65},"Plateforme",[66,70,73,76],{"label":67,"href":68,"external":69},"Offre Starter (2 500 €)","\u002Foffre-starter",false,{"label":71,"href":72,"external":69},"Devenir Ambassadeur","\u002Fambassadeur",{"label":74,"href":75,"external":69},"Modules PrestaShop","\u002Fmodules",{"label":77,"href":78,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":80,"links":81},"Le Synedre",[82,85,88,91,94,97,100,103,106],{"label":83,"href":84,"external":69},"L'histoire","\u002Fsynedre",{"label":86,"href":87,"external":69},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":89,"href":90,"external":69},"L'équipe","\u002Fequipe",{"label":92,"href":93,"external":69},"Le réacteur en direct","\u002Freacteur",{"label":95,"href":96,"external":69},"Le Drill (entraînement)","\u002Fdrill",{"label":98,"href":99,"external":69},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":101,"href":102,"external":69},"Les agents IA","\u002Fagents-ia",{"label":104,"href":105,"external":69},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":107,"href":108,"external":69},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":110,"links":111},"Ressources",[112,115,118,121,124,127],{"label":113,"href":114,"external":69},"Blog","\u002Fblog",{"label":116,"href":117,"external":69},"Academy","\u002Facademy",{"label":119,"href":120,"external":69},"Dictionnaire","\u002Fdictionnaire",{"label":122,"href":123,"external":69},"Expertise PrestaShop","\u002Fexpertise",{"label":125,"href":126,"external":69},"Flywheel","\u002Fflywheel",{"label":128,"href":129,"external":69},"Manifeste","\u002Fmanifeste",{"title":131,"links":132},"À propos",[133,136,139],{"label":134,"href":135,"external":69},"Alexandre Carette","\u002Fa-propos",{"label":137,"href":138,"external":69},"Dossier de presse","\u002Fpresse",{"label":140,"href":141,"external":69},"Contact","\u002Fcontact",{"header":143},{"logo":144,"topBar":149,"contactEmail":153,"features":154,"navBar":150},{"src":145,"alt":146,"text":134,"href":147,"class":148},"\u002Flogo-ac.svg","Alexandre Carette — Architecte E-commerce Souverain","\u002F","h-10 w-10",{"message":150,"showLanguages":69,"align":151,"languages":152},null,"left",[],"contact@alexandrecarette.fr",{"showSearch":69,"showWishlist":69,"showLogin":20,"showContact":69,"showCart":69,"stickyHeader":20,"headerLayout":155},"inline",{"items":157},[158,166,172,178,186,194,200,205],{"id":159,"type":160,"label":161,"href":123,"icon":150,"description":150,"badge":150,"groupTitle":150,"style":150,"gridColumns":150,"cssClass":150,"psCategoryId":150,"showPsChildren":69,"position":163,"children":164,"psChildren":165},41,"link",{"fr":162},"Expertise",0,[],[],{"id":167,"type":160,"label":168,"href":114,"icon":150,"description":150,"badge":150,"groupTitle":150,"style":150,"gridColumns":150,"cssClass":150,"psCategoryId":150,"showPsChildren":69,"position":169,"children":170,"psChildren":171},42,{"fr":113},1,[],[],{"id":173,"type":160,"label":174,"href":75,"icon":150,"description":150,"badge":150,"groupTitle":150,"style":150,"gridColumns":150,"cssClass":150,"psCategoryId":150,"showPsChildren":69,"position":175,"children":176,"psChildren":177},43,{"fr":74},2,[],[],{"id":179,"type":160,"label":180,"href":182,"icon":150,"description":150,"badge":150,"groupTitle":150,"style":150,"gridColumns":150,"cssClass":150,"psCategoryId":150,"showPsChildren":69,"position":183,"children":184,"psChildren":185},44,{"fr":181},"Outils IA","\u002Foutils-ia",3,[],[],{"id":187,"type":160,"label":188,"href":68,"icon":150,"description":150,"badge":150,"groupTitle":150,"style":190,"gridColumns":150,"cssClass":150,"psCategoryId":150,"showPsChildren":69,"position":191,"children":192,"psChildren":193},45,{"fr":189},"Offre Starter ✨",{"highlight":20},4,[],[],{"id":195,"type":160,"label":196,"href":117,"icon":150,"description":150,"badge":150,"groupTitle":150,"style":150,"gridColumns":150,"cssClass":150,"psCategoryId":150,"showPsChildren":69,"position":197,"children":198,"psChildren":199},46,{"fr":116},5,[],[],{"id":201,"type":160,"label":202,"href":135,"icon":150,"description":150,"badge":150,"groupTitle":150,"style":150,"gridColumns":150,"cssClass":150,"psCategoryId":150,"showPsChildren":69,"position":57,"children":203,"psChildren":204},47,{"fr":131},[],[],{"id":206,"type":160,"label":207,"href":141,"icon":150,"description":150,"badge":150,"groupTitle":150,"style":150,"gridColumns":150,"cssClass":150,"psCategoryId":150,"showPsChildren":69,"position":208,"children":209,"psChildren":210},48,{"fr":140},7,[],[],{"footer":212},{"theme":213,"description":150,"hours":150,"logo":214,"contact":215,"social":216,"bottomBar":226},"dark",{"src":145,"href":147,"alt":134},{"email":150,"phone":150,"address":150,"cta":150},[217,220,223],{"platform":218,"href":219,"label":218},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":221,"href":222,"label":221},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":224,"href":225,"label":224},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":150},{"academy":228,"blog":229,"expertise":240},[],[230,234,237],{"title":231,"url":232,"score":169,"type":233},"Docker Compose PrestaShop : configuration production prête à déployer","\u002Fblog\u002Fdevops\u002Fdocker\u002Fdocker-compose-prestashop-production","blog",{"title":235,"url":236,"score":169,"type":233},"PrestaShop headless avec Nuxt 3 : pourquoi séparer back et front","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-separation-front-back",{"title":238,"url":239,"score":169,"type":233},"PrestaShop headless : Nuxt 3, pas Next.js — le choix souverain","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-nextjs-souverainete",[]]