Pourquoi une boutique PrestaShop est lente

Une boutique PrestaShop lente l’est rarement pour une seule raison. C’est un travail répété pour chaque visiteur : construire la page, répondre à chaque filtre, chercher à chaque pause pendant la saisie. Avec peu de visites, on ne le voit pas ; avec du trafic, chacune de ces requêtes fait la queue derrière les autres, et la base de données devient le goulot d’étranglement.

Nous l’avons mesuré sur une boutique de 20 000 produits avec 50 visiteurs en même temps sur un serveur de 4 cœurs et 8 Go : sans optimisation, la base de données occupait 3 des 4 cœurs et une suggestion de recherche sur dix prenait plus de 2 secondes. Tout est raconté, graphiques à l’appui, dans Des filtres et une recherche qui n’attendent pas le serveur.

Les trois choses que fait le plus un visiteur

Pour vraiment accélérer PrestaShop, il faut accélérer ce que les clients utilisent le plus :

  • La page. Un cache de pages bien conçu sert la page déjà prête aux visiteurs qui arrivent de Google, des publicités ou de la newsletter. Pourquoi c’est délicat et comment bien le faire : Le cache de PrestaShop.
  • Les filtres. Passer les filtres dans le navigateur supprime une requête par clic et rend le filtrage instantané.
  • La recherche. Comme les filtres : le champ de recherche répond à chaque touche sans toucher à la base de données.

Et une fois le choix fait, que le tunnel de commande ne fasse pas fuir le client : 7 façons d’accélérer le tunnel de commande de PrestaShop.

Par où commencer

  1. Activez les options de Paramètres avancés › Performances (cache Smarty, CCC) si elles ne le sont pas.
  2. Si la plupart de votre trafic arrive sans session (Google, publicités, newsletter), commencez par le cache de pages.
  3. Si vous avez beaucoup de produits ou de filtres, passez les filtres dans le navigateur.
  4. Si vos clients cherchent beaucoup, faites de même avec la recherche.
requête au serveur pour chercher et filtrer, avec Instant Search et Instant Filters
0
de travail pour la base de données avec 50 visiteurs en même temps, sur une boutique de 20 000 produits
−89 %
par suggestion de recherche, du serveur au navigateur
0,45 s → 6 ms

Ce qui ralentit PrestaShop, et comment l’éviter

  1. 1

    La page est construite à chaque visite

    PrestaShop démarre, exécute les hooks de tous les modules, interroge le catalogue et rend les modèles pour chaque visiteur. Un cache de pages sûr donne aux nouveaux visiteurs la page déjà prête, sans risque pour les paniers ou les prix.

  2. 2

    Chaque clic sur un filtre est une requête

    La recherche à facettes interroge le serveur à chaque clic, et ces réponses ne se mettent pas en cache. Avec les filtres dans le navigateur, filtrer, compter et trier prend quelques millisecondes et ne coûte rien au serveur.

  3. 3

    La recherche interroge à chaque pause

    Les suggestions de la recherche standard lancent une recherche dans la base de données chaque fois que le client marque une pause en tapant. Dans le navigateur, elles répondent à chaque touche, fautes comprises.

  4. 4

    Le tunnel de commande perd des paniers

    Des étapes en trop, des formulaires longs et des calculs de livraison lents font partir le client au dernier moment. Il existe des corrections rapides qui n’obligent pas à changer de tunnel.

  5. 5

    Mesuré, pas promis

    Nous mesurons chaque amélioration sur une vraie boutique de 20 000 produits avec 50 visiteurs en même temps, avant et après, et publions les chiffres et la méthode.

  6. 6

    Sans toucher au thème ni au serveur

    Les trois modules fonctionnent sur PrestaShop 8.2 et 9.0, avec n’importe quel thème, sans overrides ni extensions PHP, et se tiennent à jour seuls grâce aux hooks de PrestaShop.

Questions fréquentes

Pourquoi ma boutique PrestaShop est-elle lente ?

Presque toujours à cause d’un travail répété : PrestaShop construit chaque page à partir de zéro, la recherche à facettes interroge la base de données à chaque clic et la recherche le fait chaque fois que le client marque une pause en tapant. Avec du trafic, ces requêtes se concurrencent. Un hébergement plus puissant aide, mais supprimer le travail répété aide davantage.

Comment accélérer la recherche de PrestaShop ?

En sortant la recherche du serveur. Instant Search écrit le catalogue dans des fichiers statiques et le navigateur y cherche : chaque recherche prend quelques millisecondes, pardonne les fautes et ne fait aucune requête à la base de données.

Les filtres de PrestaShop ralentissent-ils la boutique ?

Avec de gros catalogues et du trafic, oui : chaque clic sur un filtre est une requête lourde qui ne se met pas en cache. Instant Filters filtre, compte et trie dans le navigateur, sans requête au serveur.

Un cache de pages est-il sûr avec le panier et les prix ?

Cela dépend de sa conception. Page Cache ne garde que les pages de visiteurs sans panier ni session, sépare par devise, pays et appareil, et renouvelle les pages d’un produit dès que son prix ou son stock change.

Est-ce que ça fonctionne sur un hébergement mutualisé ?

Oui. Aucun des trois modules n’a besoin d’accès au serveur, de Varnish ni d’extensions PHP : ils s’installent depuis le back-office comme n’importe quel module.

Trouvez le module dont votre boutique a besoin

Voir les modules