Compilation des templates PrestaShop : guide Smarty et cache
La compilation des templates PrestaShop détermine la manière dont Smarty transforme les fichiers du thème en pages visibles par les visiteurs. Ce guide présente les modes disponibles, le moment où configurer le cache et les précautions à prendre pour afficher une modification sans ralentir la boutique. Pour approfondir le sujet, l'optimisation de la compilation des templates s’intègre à une démarche complète d’amélioration de la performance e-commerce.
Comprendre la compilation des templates Smarty
Il convertit les fichiers.tpl du thème en code PHP exécutable, puis conserve ce code dans le cache afin d’éviter de le générer à chaque affichage. Ce fonctionnement permet d’adapter le bon paramètre au contexte : développement actif, recette ou production stabilisée.

Le rôle de Smarty dans PrestaShop
À chaque affichage, Smarty vérifie si un fichier compilé existe déjà pour le template demandé. Dans le cas contraire, il lance une compilation, opération consommatrice de ressources qui peut rendre PrestaShop lent si elle se répète inutilement, aussi bien sur le front-office que sur le back-office. La bonne configuration, c’est celle qui réserve cette opération aux modifications réellement nécessaires.
- Fichiers.tpl : sources du thème, lues par Smarty pour produire un fichier PHP compilé lors de la première demande.
- Fichiers compilés : conservés dans le dossier de cache et réutilisés tant que le template source n’a pas été modifié.
- Identifiant de cache : clé unique combinant la boutique, le groupe client et la langue afin de servir le contenu correspondant.
En pratique sur PrestaShop, le coût de compilation intervient surtout lors de la première exécution. Une fois le fichier généré, PrestaShop l’exécute sans relire le template source. Une modification du fichier.tpl concerné doit donc être le seul motif d’une nouvelle compilation.
Les trois modes de compilation
Les paramètres se trouvent dans Paramètres avancés > Performances du back-office. Aucun changement direct dans PHP ou MySQL n’est requis pour configurer le comportement de Smarty face aux fichiers du thème. Chaque option correspond à une étape précise de la vie de la boutique.
- Ne jamais recompiler : PrestaShop ne vérifie pas les fichiers sources. Ce mode convient à une boutique complète et figée, mais toute modification du thème restera invisible tant que le cache n’aura pas été vidé manuellement.
- Recompiler si mis à jour : Smarty compare la date du fichier source à celle du fichier compilé. Il s’agit de l’option par défaut et du meilleur compromis pour une boutique active qui reçoit encore des modifications ponctuelles.
- Forcer la compilation : chaque requête déclenche une compilation complète. Ce réglage est réservé au développement actif d’un thème ou d’un module.
- Cache Smarty activé : associé à l’un des modes précédents, il conserve le HTML généré et évite de répéter les mêmes traitements lors des visites suivantes.
Le mode choisi doit correspondre à la phase actuelle du projet. Un réglage de développement conservé en production peut augmenter sensiblement le temps de génération de chaque page.
| Mode de compilation | Contexte recommandé | Impact performance |
| Ne jamais recompiler les fichiers de templates | Boutique finalisée, thème figé | Optimal, aucune vérification de fichier |
| Recompiler si mis à jour | Boutique active avec modifications ponctuelles | Très bon, contrôle de date rapide |
| Forcer la compilation à chaque appel | Développement de thème ou de module | Mauvais en production, génération à chaque requête |
L’impact sur les performances
La réutilisation d’un fichier compilé améliore directement le TTFB (Time To First Byte). Des hébergeurs spécialisés observent qu’un cache Smarty correctement configuré peut diviser ce temps par deux. Le bénéfice concerne les pages produits, les listes de catégories et les contenus dynamiques produits par les modules.
À l’inverse, forcer la compilation à chaque appel en production neutralise le cache compilé. Chaque visiteur déclenche alors une génération complète, indépendamment du contenu affiché. Sur un catalogue de plusieurs centaines de références, la différence se joue sur la configuration serveur autant que sur le réglage de Smarty.
Le cache APCu peut compléter ce dispositif en conservant les données fréquemment utilisées directement en mémoire vive, si l’extension PHP correspondante est disponible sur le serveur. Cette couche réduit la sollicitation du système de fichiers, notamment pendant les pics de trafic liés aux campagnes marketing ou aux périodes de soldes.
Adapter la compilation au thème
Le choix du mode de compilation dépend de l’étape du projet. Pendant la construction ou la refonte du thème, il faut voir immédiatement chaque modification.

Pendant les modifications du thème
Dès que vous intervenez sur les fichiers templates d’un thème, le mode « Forcer la compilation à chaque appel » affiche chaque changement dès le rechargement de la page. Ce réglage convient notamment à un site vitrine PrestaShop en cours de personnalisation, lorsque les allers-retours entre le fichier source et le navigateur servent à affiner le rendu.
La compilation à chaque requête sollicite inutilement le serveur et dégrade les performances en conditions réelles. Dès que les retouches sont terminées, repassez au réglage prévu pour la production avant de modifier la configuration globale.
Pourquoi les changements restent invisibles
Avec l’option « ne jamais recompiler les fichiers de templates », un fichier modifié dans le dossier du thème reste ignoré jusqu’au prochain vidage manuel du cache. Cela concerne les templates de mise en page, les templates de modules et les éléments de navigation : modifier la structure du menu PrestaShop dans un fichier de thème ne produira aucun effet visible tant que les fichiers compilés correspondants n’auront pas été supprimés.
Pour relancer la génération, il suffit de vider le cache depuis Paramètres avancés > Performances. Le moteur Smarty pourra alors produire un fichier compilé à partir de la nouvelle version du template.
Passer du développement à la production
Une fois le thème validé, le passage en production suit un ordre précis. La compilation passe en mode « Recompiler si mis à jour » ou, si aucune modification n’est prévue, en mode sans recompilation. Le cache Smarty est activé en parallèle afin de conserver les templates compilés et d’éviter un calcul inutile lors des visites suivantes.
Chaque thème PrestaShop réside dans son propre dossier sous /themes. Son fichier de configuration /themes/<nom_du_thème>/config/theme.yml doit indiquer le nom, la version et la plage de compatibilité du thème pour qu’il soit reconnu comme valide.
Produits recommandés
Exploiter efficacement le cache Smarty
Configurer la compilation sans activer le cache Smarty ne couvre qu'une partie du travail. Le cache conserve le HTML généré et évite de répéter les mêmes traitements à chaque chargement. Correctement paramétré, il réduit la charge serveur et aide la boutique à absorber les pics de trafic sans dégradation perceptible.

Ce que le cache évite de recalculer
Sans cache, PrestaShop régénère le HTML de chaque page à chaque visite : lecture des fichiers du thème, création des objets PHP, exécution des requêtes SQL, puis assemblage du rendu final. Un back-office PrestaShop très lent peut signaler que cette régénération touche aussi l'administration, notamment lorsqu'un paramètre de compilation inadapté impose le rechargement de tous les fichiers compilés à chaque accès.
Une fois le cache activé et correctement dimensionné, le serveur sert le résultat déjà construit. La charge diminue sur les pages produits et les listes de catégories, particulièrement sollicitées pendant les campagnes promotionnelles. Des hébergeurs spécialisés relèvent que le TTFB peut être divisé par deux dans ces conditions.
Le cache dans les modules
Chaque module peut gérer son propre cache Smarty à l'aide de trois méthodes complémentaires. La méthode isCached() vérifie si un fichier de cache existe pour un template et un identifiant donnés. Dans ce cas, le module affiche directement son contenu, sans relancer les traitements, créer d'objet ni exécuter de requête en base de données.
Lorsqu'aucun cache n'est disponible, le module exécute ses traitements habituels, construit les données et assigne les variables, puis appelle display() avec un identifiant non nul afin d'écrire le fichier de cache. À partir de PrestaShop 1.5.4.1, getCacheId() construit cet identifiant en combinant le nom du fichier, la boutique, le groupe client et la langue. Chaque contexte d'affichage dispose ainsi d'un cache distinct.
Un module de blog comme ETS Blog pour PrestaShop affiche des articles dont le contenu évolue régulièrement. Il doit donc ajouter un identifiant de cache pertinent et invalider ce cache dès qu'un article est publié ou modifié. La méthode _clearCache() remplit cette fonction : elle supprime les fichiers associés au template concerné, généralement après une modification de la configuration du module, afin d'éviter l'affichage de données obsolètes.
Gérer les contenus dynamiques
Certaines pages ou zones de page ne peuvent pas être mises en cache sans risque d'afficher des données incorrectes. Il faut les repérer précisément, puis les exclure du cache ou leur attribuer un identifiant spécifique pour les isoler.
- Panier et compte client : ces données sont personnalisées par définition. Elles doivent être exclues du cache Smarty afin d'éviter tout mélange entre les sessions.
- Modules de paiement : ces pages sont sensibles et leur contenu varie selon l'état de la commande ainsi que les moyens de paiement disponibles.
- Produits à stock limité : le niveau de stock peut changer entre deux visites. L'identifiant de cache doit être invalidé dès qu'une vente est enregistrée.
- Prix personnalisés : lorsque des groupes clients bénéficient de tarifs distincts, l'identifiant de cache doit intégrer le groupe client pour afficher le bon prix à chaque visiteur.
La purge du cache doit rester ciblée et répondre à un événement réel : modification d'un produit, changement de configuration ou mise à jour d'un module. Vider le cache toutes les quelques minutes force PrestaShop à régénérer des fichiers qui auraient pu être réutilisés. Cette pratique dégrade la performance globale et augmente la consommation des ressources serveur.
Purger le cache sans ralentir PrestaShop
Vider le cache est une opération courante sur PrestaShop, mais son effet se fait sentir immédiatement : après la purge, le premier chargement de chaque page oblige le serveur à reconstruire les fichiers compilés. Le bon moment et la bonne méthode permettent donc de limiter l’impact sur les visiteurs et la stabilité de la boutique.
Quand vider le cache Smarty
Planifiez le vidage du cache pendant une période de faible trafic. La régénération des fichiers mobilise des ressources serveur et peut ralentir temporairement la boutique.
L’option « Vider le cache à chaque modification », disponible dans les paramètres avancés de PrestaShop, évite d’avoir à purger manuellement après chaque ajustement de produits, de configuration ou de thème.
- Changement de thème : les nouveaux fichiers de templates doivent être compilés. Vider le cache après la modification évite que l’ancien rendu reste affiché.
- Mise à jour de module : un fichier compilé devenu incompatible avec le code actualisé peut bloquer certaines pages ou provoquer des erreurs.
- Montée de version PrestaShop : les templates du cœur peuvent avoir évolué. Un cache obsolète entraîne alors des incohérences visuelles ou fonctionnelles.
À l’inverse, vider le cache sans modification précise ne permet pas d’optimiser PrestaShop. La boutique reconstruit des fichiers qu’elle aurait pu réutiliser, ce qui augmente la charge serveur sans bénéfice pour les visiteurs.
Vider le cache sans back-office
Si le back-office devient inaccessible après une mise à jour ou un conflit de code, l’intervention reste possible directement sur le serveur. Avec PrestaShop 1.7 et les versions ultérieures, supprimez le contenu du dossier /var/cache/ via FTP ou SSH afin de forcer une régénération propre. Le cache se recrée automatiquement lors de la première visite.
Cette méthode convient notamment lorsqu’un module en conflit bloque l’administration. Une fois le dossier vidé, activez temporairement le mode debug PrestaShop pour afficher les erreurs techniques et identifier leur origine. La désactivation des options de surcharge ou des modules tiers depuis le fichier de configuration approprié aide ensuite à isoler la cause, avant toute correction.
Diagnostiquer une boutique trop lente
Une boutique ralentie juste après la purge n’est pas nécessairement mal configurée. La compilation temporaire des fichiers est normale et s’atténue une fois la reconstruction effectuée par les premières visites. Si la lenteur persiste au-delà des premières minutes, examinez d’autres paramètres : le mode de compilation, l’état du cache APCu et la compatibilité des options CCC avec le thème installé.
En production, prestashop-france.fr recommande d’associer le cache Smarty activé à une compilation réglée sur « Ne jamais recompiler » ou « Recompiler si mis à jour », selon la fréquence des modifications. Redis réduit la pression sur la base de données selon le catalogue, et Varnish accélère les pages statiques déjà mises en cache. Avec une configuration serveur adaptée et ces couches complémentaires, une boutique PrestaShop absorbe mieux les pics de trafic.
Foire aux questions
En production, l'option « Ne jamais recompiler les fichiers de templates » offre généralement la meilleure performance : Smarty ne vérifie pas la date des fichiers à chaque requête. Si des modifications restent possibles, choisissez plutôt « Recompiler si mis à jour ». Ce paramètre conserve un contrôle léger et permet d'afficher automatiquement les changements apportés au thème ou à un module.
Lorsque le mode « Ne jamais recompiler » est actif, PrestaShop utilise les fichiers compilés existants, même si les fichiers sources ont changé. Pour afficher vos modifications, videz le cache dans « Paramètres avancés > Performances » : PrestaShop pourra alors supprimer les anciens fichiers compilés et en générer de nouveaux au prochain chargement. Si le problème persiste, vérifiez que le fichier modifié se trouve dans le bon dossier du thème, sous /themes.
Effacer le cache à chaque occasion n'est pas utile. Chaque purge oblige PrestaShop à régénérer les fichiers compilés, ce qui mobilise des ressources serveur et peut ralentir temporairement la boutique. Videz le cache uniquement lors d'un changement de thème, d'une mise à jour de module, d'une modification de configuration ou d'une montée de version. L'option automatique « Vider à chaque modification » couvre toutefois la plupart des situations courantes.
Dans le code d'un module, trois méthodes Smarty servent à gérer le cache : isCached() vérifie la présence d'un fichier de cache, getCacheId() construit un identifiant unique selon la boutique, la langue et le groupe client, tandis que _clearCache() supprime les fichiers obsolètes. En pratique sur PrestaShop, ajouter quelques lignes autour des appels existants suffit pour activer cette gestion et réduire le nombre de requêtes SQL lors de l'affichage d'une page.
Oui, cette combinaison convient particulièrement aux boutiques à fort trafic. Vous pouvez désactiver les options CCC si le serveur utilise HTTP/2 ou HTTP/3 : ces protocoles gèrent nativement le multiplexage et rendent la fusion des assets CSS et JavaScript moins décisive. Sans ces protocoles, activez le Smart Cache CCC afin de limiter le nombre de requêtes HTTP. Redis et Varnish ajoutent ensuite une couche complémentaire pour améliorer les temps de réponse au-delà du seul cache Smarty.
Articles similaires

Prestashop b2b : activer le mode b2b et booster votre commerce
Configurez Prestashop pour votre entreprise : activez le mode b2b, paramétrez les tarifs professionnels et choisissez le bon module pour vendre efficacement.

Duplicate PrestaShop : boutiques, produits et catégorie
Apprenez à duplicate PrestaShop efficacement : clonez une boutique, une commande, un produit ou une catégorie sans nuire à votre SEO avec nos conseils anti-contenu dupliqué.











