Purger le cache LiteSpeed depuis un hook PrestaShop
Quand on développe un module qui modifie un produit hors du flux standard, il faut prévenir LSCache de purger les pages concernées. Snippet à intégrer dans n'importe quel module.
Quand on touche à un produit hors du flux standard PS (par exemple via un import ou une commande CLI), ps_lscache n'est pas notifié et la page reste cachée avec l'ancienne valeur. Voici comment forcer la purge ciblée.
Le code
// Dans votre module, après modification d'un produit :
if (\Module::isEnabled('ps_lscache')) {
/** @var \Ps_Lscache $lscacheModule */
$lscacheModule = \Module::getInstanceByName('ps_lscache');
if ($lscacheModule && method_exists($lscacheModule, 'purgeByTags')) {
$lscacheModule->purgeByTags([
'P_' . (int) $idProduct, // page produit
'C_' . (int) $idCategory, // page catégorie parente
'home', // homepage si produit en featured
]);
}
}
Les tags PrestaShop standard
P_X: page produit ID XC_X: page catégorie ID XM_X: page fabricantS_X: page fournisseurCMS_X: page CMShome: la homepagepagination: toutes les listes paginées
Purge globale (à éviter sauf urgence)
$lscacheModule->purgeAll();
Évitez la purge globale en production : elle invalide toutes les pages d'un coup et provoque un pic de charge le temps que le cache se reconstruise. Préférez toujours les tags ciblés.
Tester depuis la CLI
curl -X PURGE -H "X-LiteSpeed-Purge: tag=P_42" https://votreboutique.be/
Header HTTP envoyable directement à OLS pour invalider une URL. Utile pour debug ou intégration externe (CI, ERP, …).