⚡ Performance

LiteSpeed Cache pour PrestaShop

Installer et régler le module officiel LSCache pour PrestaShop : TTL, ESI, purge, exclusions, intégration Redis, debug.

intermédiaire ⏱ 15 min Mise à jour : 2026-04-23

LiteSpeed Cache (LSCache) est un cache page géré au niveau du serveur web LiteSpeed, bien plus efficace qu'un cache applicatif PHP : la page est servie sans même atteindre PHP. Couplé au module officiel PrestaShop, il gère les subtilités d'une boutique (paniers, comptes clients, contenus personnalisés) via ESI — le reste de la page reste caché pendant que les blocs dynamiques sont recomposés à la volée.

LiteSpeed chez Datacampus
LiteSpeed est activable sur demande (ticket ServiceDesk) sur les hébergements mutualisés et les VPS Plesk. Sans activation, Plesk tourne sous Apache/nginx et LSCache ne sert à rien. Une fois LiteSpeed en place, l'installation du module côté PrestaShop prend 5 minutes.

Installation du module PrestaShop

  1. Télécharger le module LiteSpeed Cache depuis litespeedtech.com (version correspondant à votre PrestaShop — 1.7.x ou 8.x).
  2. Admin PrestaShop > Modules > Module Manager > Importer un module, déposer le .zip.
  3. Installer et activer.
  4. Aller dans la configuration du module : LiteSpeed Cache > Configuration.

Configuration de base

Onglet « Paramètres généraux »

  • Enable LiteSpeed Cache — Oui.
  • Enable Cache for Public Pages — Oui. C'est le cœur du gain : toutes les pages produit, catégorie, CMS servies aux visiteurs non connectés sont cachées.
  • Enable Cache for Logged-in Users — Non par défaut. À laisser désactivé sauf cas particulier (les comptes clients et paniers sont personnalisés, le ratio de hits tombe vite).

Durées de vie (TTL)

TypeTTL recommandéCommentaire
Page produit / catégorie86400 s (24 h)Invalidé automatiquement sur modif stock/prix
Page CMS604800 s (7 jours)Peu de changements, TTL long sans risque
Page 4043600 s (1 h)Évite de spam le back à chaque bot
Home28800 s (8 h)Selon fréquence de MAJ produits phares

Les TTL élevés sont sûrs parce que le module déclenche une purge ciblée à chaque événement PrestaShop pertinent (modification produit, stock, commande, contenu CMS).

ESI — le détail qui change tout

ESI (Edge Side Includes) permet de cacher une page presque en entier tout en laissant certains blocs dynamiques : le panier, le bloc « Mon compte », éventuellement un widget utilisateur.

Le module fournit des blocs ESI prêts à l'emploi. Onglet ESI Settings :

  • Cart block — bloc ESI non caché, recomposé à chaque vue. Activer.
  • Customer block (« Mon compte » en en-tête) — ESI, non caché. Activer.
  • Other customizations — pour les thèmes custom, on peut déclarer d'autres blocs via les hooks fournis.
💡
Sans ESI, tout casse
Si vous cachez la page complète sans ESI, les visiteurs verront le panier d'un autre (ou le leur figé). ESI est obligatoire dès qu'on cache une boutique avec utilisateurs connectés. Le module PrestaShop est correctement paramétré pour ça, ne le désactivez pas.

Règles de purge (Purge Rules)

Le module déclenche automatiquement les purges suivantes :

  • Modification produit — purge de la fiche produit + catégories parentes + home si le produit est en vedette.
  • Stock à zéro / retour en stock — purge fiche produit.
  • Nouvelle commande — purge des fiches produit commandées (car stock a bougé).
  • Modification CMS — purge de la page CMS concernée.
  • Changement de taxes ou devises — purge totale (c'est lourd, mais nécessaire).

Onglet Manage > bouton Purge All pour une purge totale manuelle après un gros changement (thème, module).

Exclusions

Certaines URL ne doivent jamais être cachées. Le module inclut les exclusions PrestaShop standard par défaut :

  • /order — tunnel de commande.
  • /my-account — compte client.
  • /cart — panier.
  • /authentication — login / inscription.
  • ?back=, &back= — URL de redirection post-auth.

Pour ajouter des exclusions custom (un module qui expose une URL sensible, une API interne) : onglet Customization > Do-Not-Cache URLs, une URL (ou regex) par ligne.

Intégration avec Redis

LSCache et Redis travaillent à deux niveaux différents, complémentaires :

  • LSCache sert la page HTML complète aux visiteurs non connectés (ou avec ESI pour les connectés) — 0 PHP, 0 SQL.
  • Redis accélère les requêtes SQL et options PrestaShop pour toutes les pages non cachées : panier, commande, back-office, API.

Sur un site rapide, configurez les deux. Redis se règle dans Paramètres avancés > Performances (voir la doc Redis), LSCache dans son propre module. Ils n'ont pas besoin de se connaître.

Debug : vérifier qu'une page est bien cachée

LiteSpeed ajoute un en-tête de réponse x-litespeed-cache sur chaque requête :

  • hit — la page a été servie depuis le cache, PHP n'a pas été appelé. Objectif.
  • miss — la page n'était pas en cache, elle vient d'être générée et mise en cache.
  • no-cache — la page ne sera pas cachée (exclusion, erreur, cookie non autorisé).

Voir l'en-tête

# curl
curl -I https://votredomaine.fr/ | grep -i litespeed

# Dans le navigateur
# DevTools > Network > cliquer sur la requête > Headers > Response Headers
💡
Premier appel = miss, deuxième = hit
C'est normal : le cache se peuple à la première requête. Testez en faisant deux curl -I consécutifs sur la même URL.

Commandes utiles

Purge depuis la CLI PrestaShop

php bin/console litespeedcache:purge --all

Purge via URL signée (CI/CD)

Le module expose un endpoint de purge protégé par une clé (onglet Environment > Purge Callback URL). Utile pour déclencher une purge depuis un pipeline GitLab après déploiement.

Pièges à éviter

⚠️
Les erreurs qu'on voit le plus souvent
  • ESI non activé + cache connectés ON = paniers visibles d'un client à l'autre. Catastrophique.
  • TTL trop court partout — sur un catalogue stable, 5 minutes est un gaspillage. Le module purge correctement, osez des TTL longs.
  • Oubli de purger après changement de thème — le CSS/JS est caché, les visiteurs voient l'ancien template. Purge All obligatoire.
  • Modules tiers qui émettent Cache-Control: no-cache — suffit à désactiver LSCache sur la page concernée. Auditer les modules si le hit ratio reste bas.
  • Cookies custom non déclarés — si un module ajoute un cookie qui varie par utilisateur, déclarez-le dans les Do-Not-Cache Cookies sinon tous les visiteurs voient la même valeur.

Pour aller plus loin

Besoin d'aide ?

Cette documentation ne couvre pas votre cas ? Notre support humain est là.