⚡ PerformanceIntermédiaire PS 1.6 PS 1.7 PS 8.x

Accélérer un site PrestaShop : guide complet d'optimisation des performances

Découvrez comment optimiser la vitesse de votre boutique PrestaShop : profiling, hooks, index SQL, hébergement et bonnes pratiques pour un site rapide.

En bref : Pour accélérer PrestaShop, commencez par activer le profiling pour identifier les modules et requêtes SQL qui ralentissent le site, dégraissez les hooks inutiles, ajoutez des index SQL sur les tables critiques, optimisez la configuration serveur (OPcache, Gzip, cache navigateur) et choisissez un hébergement adapté à votre volume.

Publié le 21 mars 2026 7 min de lecture Alexandre Carette

Introduction

La vitesse de chargement d'une boutique PrestaShop est un facteur déterminant pour le taux de conversion, le référencement naturel et l'expérience utilisateur. Un site lent fait fuir les visiteurs : selon Google, 53 % des utilisateurs mobiles quittent une page qui met plus de 3 secondes à charger.

Optimiser les performances d'un PrestaShop ne se résume pas à changer d'hébergeur ou activer un cache. C'est une démarche méthodique qui commence par un diagnostic précis, puis s'attaque aux vrais goulets d'étranglement. Voici la méthode que j'applique depuis plus de dix ans sur les boutiques de mes clients.

Étape 1 : Diagnostiquer avec le profiling intégré

Avant toute optimisation, il faut mesurer. PrestaShop embarque un outil de profiling natif qui permet d'analyser finement ce qui ralentit chaque page.

Activer le profiling sur PrestaShop 1.6

Éditez le fichier config/defines.inc.php et modifiez la constante suivante :


define('_PS_DEBUG_PROFILING_', true);

Rechargez ensuite n'importe quelle page de votre boutique. Un panneau de diagnostic apparaît en bas de page, détaillant :

  • Le **temps d'exécution** de chaque hook
  • Le **nombre de requêtes SQL** et leur durée individuelle
  • La **consommation mémoire** de chaque module
  • Les **modules chargés** sur la page courante

Activer le profiling sur PrestaShop 1.7 / 8.x

Sur les versions modernes, le fichier a changé d'emplacement. Éditez config/defines.inc.php :


define('_PS_MODE_DEV_', true);

Puis utilisez la Debug Toolbar de Symfony, accessible via l'icône en bas de page. Elle offre un profiling bien plus riche :


// Dans .env ou .env.local (PrestaShop 8.x)
APP_DEBUG=1
APP_ENV=dev

La toolbar Symfony expose les onglets Performance, Doctrine (requêtes SQL), Twig (templates) et Events (hooks).

Attention : Ne laissez jamais le profiling activé en production. Cela ralentit considérablement le site et expose des informations sensibles.

Étape 2 : Auditer et dégraisser les hooks

Le profiling révèle souvent le même problème : des modules se chargent sur des pages où ils n'ont aucune utilité. Un module de commentaires produit qui s'exécute sur la page d'accueil, un module de cross-selling qui tourne sur la page panier… Chaque module inutile ajoute des requêtes SQL et du temps de rendu.

Identifier les modules gourmands

Dans le panneau de profiling, triez les modules par temps d'exécution. Concentrez-vous sur ceux qui dépassent 50 ms ou qui génèrent plus de 10 requêtes SQL.

Décrocher un module d'un hook

Deux méthodes selon votre version :

Via le back-office (toutes versions) :

  1. Allez dans **Design > Positions** (ou **Modules > Positions** en 1.6)
  2. Recherchez le module concerné
  3. Cliquez sur la croix pour le retirer du hook où il n'est pas nécessaire
  4. Par code (contrôle fin, PrestaShop 8.x) :

    Vous pouvez conditionner l'exécution d'un module dans sa méthode de hook :

    
    public function hookDisplayHome($params)
    {
        // Ne rien faire si on n'est pas sur la page d'accueil
        if ($this->context->controller->php_self !== 'index') {
            return '';
        }
        
        // Logique du module...
    }
    

    Hooks les plus critiques à auditer

    HookImpactVérifier `displayHeader`Chaque pageScripts JS/CSS inutiles `actionFrontControllerSetMedia`Chaque pageAssets non nécessaires `displayHome`Page d'accueilModules lourds (sliders, produits) `displayProductAdditionalInfo`Fiche produitWidgets superflus `displayShoppingCartFooter`PanierModules de recommandation

    Étape 3 : Optimiser les requêtes SQL avec des index

    PrestaShop génère des centaines de requêtes SQL par page. Sur un catalogue de plusieurs milliers de produits, l'absence d'index appropriés peut transformer une requête de 5 ms en une requête de 500 ms.

    Identifier les requêtes lentes

    Activez le slow query log de MySQL/MariaDB :

    
    SET GLOBAL slow_query_log = 'ON';
    SET GLOBAL long_query_time = 0.5;
    SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';
    

    Puis analysez les requêtes avec EXPLAIN :

    
    EXPLAIN SELECT * FROM ps_product p
    JOIN ps_product_lang pl ON p.id_product = pl.id_product
    WHERE pl.id_lang = 1 AND p.active = 1;
    

    Si la colonne type affiche ALL (full table scan), un index est probablement nécessaire.

    Index recommandés pour PrestaShop

    Voici les index qui améliorent le plus les performances sur les installations standard :

    
    -- Accélérer les recherches produit par catégorie
    ALTER TABLE ps_category_product 
      ADD INDEX idx_id_category_position (id_category, position);
    
    -- Accélérer le filtre par attributs
    ALTER TABLE ps_product_attribute 
      ADD INDEX idx_product_default (id_product, default_on);
    
    -- Accélérer les recherches de stock
    ALTER TABLE ps_stock_available 
      ADD INDEX idx_product_attribute_shop 
      (id_product, id_product_attribute, id_shop);
    
    -- Accélérer le chargement des images
    ALTER TABLE ps_image 
      ADD INDEX idx_product_cover (id_product, cover);
    

    Précaution : Testez toujours vos index sur un environnement de préproduction. Un index mal conçu peut ralentir les écritures (ajout au panier, passage de commande).

    Étape 4 : Choisir le bon hébergement

    L'hébergement mutualisé est le premier frein de performance pour la majorité des boutiques PrestaShop. Si votre catalogue dépasse 500 produits ou si vous avez plus de 100 visiteurs simultanés, un serveur dédié ou un VPS devient indispensable.

    Recommandations d'infrastructure

    VolumeHébergement recommandéBudget mensuel < 500 produits, < 1 000 visites/jourVPS 4 Go RAM15-30 € 500–5 000 produitsServeur dédié 16 Go RAM40-80 € > 5 000 produits ou fort traficDédié 32 Go + Redis + Varnish80-200 €

    Configuration serveur optimale

    
    # Configuration Nginx optimisée pour PrestaShop
    server {
        # Compression Gzip
        gzip on;
        gzip_types text/css application/javascript application/json image/svg+xml;
        gzip_min_length 1024;
        
        # Cache des assets statiques
        location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
            expires 1y;
            add_header Cache-Control "public, immutable";
        }
        
        # FastCGI cache pour les pages
        fastcgi_cache_valid 200 10m;
        fastcgi_cache_bypass $http_cookie;
    }
    
    
    ; php.ini optimisé pour PrestaShop
    memory_limit = 512M
    max_execution_time = 300
    opcache.enable = 1
    opcache.memory_consumption = 256
    opcache.max_accelerated_files = 20000
    opcache.validate_timestamps = 0  ; Désactiver en prod
    realpath_cache_size = 4096K
    realpath_cache_ttl = 600
    

    Étape 5 : Optimisations front-end

    Au-delà du back-end, le front-end joue un rôle majeur dans la vitesse perçue.

    Activer la combinaison et minification des assets

    Dans le back-office PrestaShop :

    1. **Paramètres avancés > Performances**
    2. Activez **Concaténation CCC** (Combine, Compress, Cache) pour le CSS et le JavaScript
    3. Activez le **cache Smarty** (ou Twig en 8.x) en mode "Recompiler si modifié"
    4. Optimiser les images

      Les images représentent souvent 60 à 80 % du poids total d'une page :

      
      # Convertir les images en WebP (gain de 25-35 %)
      find img/p/ -name "*.jpg" -exec cwebp -q 80 {} -o {}.webp \;
      

      Sur PrestaShop 8.x, activez le support WebP natif dans Paramètres avancés > Images.

      Implémenter le lazy loading

      Sur PrestaShop 8.x, ajoutez l'attribut loading="lazy" aux images produit dans vos templates :

      
      <img src="{$product.cover.medium.url}" 
           alt="{$product.name}" 
           loading="lazy" 
           width="300" 
           height="300">
      

      Étape 6 : Mettre en place un système de cache avancé

      Pour les boutiques à fort trafic, un cache applicatif réduit drastiquement la charge serveur.

      Redis comme cache de session et d'objets

      
      // config/settings.inc.php ou parameters.php (PrestaShop 8.x)
      // Cache des sessions via Redis
      define('_CACHE_ENABLED_', 1);
      define('_CACHING_SYSTEM_', 'CacheRedis');
      

      Configuration dans parameters.php (PrestaShop 8.x) :

      
      parameters:
          ps_cache_enable: true
          ps_caching_system: CacheRedis
          redis_server: '127.0.0.1'
          redis_port: 6379
      

      Checklist finale d'optimisation

      • [ ] Profiling activé et analysé sur les 5 pages principales
      • [ ] Modules inutiles décrochés des hooks non pertinents
      • [ ] Index SQL ajoutés sur les tables critiques
      • [ ] OPcache activé et configuré
      • [ ] Compression Gzip activée
      • [ ] Images optimisées (WebP si possible)
      • [ ] Cache navigateur configuré (expires headers)
      • [ ] CCC activé pour CSS et JS
      • [ ] Hébergement adapté au volume du catalogue
      • [ ] Lazy loading implémenté sur les images

      En appliquant méthodiquement ces optimisations, j'obtiens régulièrement des gains de 40 à 70 % sur le temps de chargement des boutiques de mes clients. La clé est toujours la même : mesurer d'abord, optimiser ensuite, et ne jamais toucher à ce qu'on n'a pas diagnostiqué.

#performance #optimisation #profiling #hooks #hébergement #sql #vitesse

Questions fréquentes

Tout ce que vous devez savoir sur ce sujet.

Un projet PrestaShop ?

Discutons-en directement.

★★★★★

193 projets livrés

Gratuit & sans engagement — réponse sous 24h

Alexandre Carette

Alexandre Carette

Expert PrestaShop & Architecture E-commerce

Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.