Bien gérer le cache avec Magento 2
Suite de nos précédents articles sur les solutions pour accélérer votre site e-commerce sous Magento, voici quelques points clés pour comprendre les différents types de caches disponibles dans Magento et les solutions pour en ajouter.
Le cache pour accélérer Magento
Comme tout CMS, l’affichage de pages ou blocs statiques HTML dans Magento est tributaire de requêtes multiples aux bases de données et de formatage complexes à partir de PHP notamment. Tout ceci est très consommateur de ressource et peut ralentir considérablement l’outil.
La solution est de pre-calculer tout ce qui peut l’être et d’afficher en frontend le plus possibles d’éléments et de pages préparés à l’avance. Une fois « préparés » ses éléments (blocs HTML) et pages vont être stockées sur le serveur ou localement dans le navigateur du client.
Pour autant il existe quantité de caches relatifs à Magento. Ceux internes à l’outil et d’autres qui peuvent être ajoutés pour accélérer encore la délivrabilité du contenu aux internautes. On peut citer notamment :
-
-
- Le cache de configuration : il stocke les informations de configuration de Magento dont les paramètres sont stockés dans la base de données voire dans des fichiers de paramètres XML. Ces données ne changent pas souvent et il faut à tout prix éviter leur « relecture » par le système.
- Le cache de mise en page : il permet de stocker la structure de la mise en page. Comme cette dernière peut être largement remaniée sur des types de pages spécifiques (par exemple pour formater une page de catégorie de produits particulière) ou une page spécifique, le schéma est ainsi pre-chargé sans relecture depuis la base de données ou le module qui produit ces pages.
- Le cache des blocs : Magento dispose d’une structuration par blocs. Cela permet de définir une seule fois par exemple des données qui vont pouvoir être re-utilisées sur tout le site ou à certains endroits. Encore une fois leur pre-calcul et leur stockage statique permettra d’accélérer la composition des pages donc leur affichage.
- Du cache dans les collections de données : typiquement ici on parle des données les plus fréquentes d’une boutique, les pages de catégories de produits. Composer à l’avance ces pages permet également un gain considérable dans l’utilisation des ressources.
- Le cache des vues des pages (Full Page Cache ou FPC) : il stocke les vues des pages générées. Il s’agit donc à la fois du code HTML, des styles (CSS) et des scripts inclus dans les pages. Les pages ainsi mises en cache s’affichent instantanément, encore une fois sans requêtes complexes aux bases ni composition complexe via PHP.
- Varnish Cache : il s’agit cette fois ci d’un outil de cache externe à Magento. Serveur de cache HTTP il est souvent intégré dans les configuration de sites sous Magento afin de stocker les pages web générées. Proxy cache très puissant il s’interface entre Magento et le client. Il évite l’exécution de code PHP ou de requêtes aux bases et sert des pages déjà générées. Il libère la machine où tourne Magento notamment pour permettre un travail plus important en backend ou sur des process plus ou moins lourds tout en apportant une experience de navigation optimale pour les internautes en frontend.
- Redis Cache : nativement il est également possible de configurer Magento pour utiliser le cache Redis. Ce type de cache utilise la mémoire RAM disponible sur le serveur (et parfois le disque) pour y stocker des structures de données complexes. Il offre une très grande performance en terme de rapidité. Il réduit la charge sur les bases de données et permet de stocker les informations de sessions d’utilisateurs et d’une manière générale les informations temporaires utilisées par Magento.
- Memcached est assez similaire à Redis : il permet d’utiliser la mémoire vive du serveur pour le stockage de données temporaire et fréquemment utilisées par Magento et ses clients. Il est peut être un peu plus léger en terme d’utilisation des ressources sur le serveur et en terme de configuration que Redis. Redis en revanche va offrir peut être plus de possibilités dans la mise en place de fonctions de persistance des données.
-
Les points à surveiller pour utiliser ces systèmes de cache avec Magento
L’utilisation des systèmes de cache doit être fait avec précaution afin d’en limiter les inconvénients et obtenir un profit évident.
-
-
- Vérifier la stabilité des systèmes : la configuration de Redis, Memcached, du Full Page Cache ou même Varnish peut être délicate. Il est important d’en vérifier la stabilité sous peine d’affecter au final les performances du site ou même sa pertinence du fait d’un rafraichissement des données un peu trop « aléatoire ».
- Un surplus en terme d’infrastructures matérielles : les systèmes de cache peuvent nécessiter plus de RAM, des disques plus rapides (SSD) voire des machines supplémentaires (Varnish).
- La cohérence des données : on l’a vu un peu plus haut l’utilisation du cache nécessite de maintenir la cohérence entre les données en cache avec les données d’origine qui peuvent évoluer dans le temps. Il est donc nécessaire de définir précisément le fonctionnement de la mise à jour de ces données de façon à éviter des données obsolètes. On voit fréquemment sur des sites marchands (Amazon pour n’en citer qu’un) où des pages de listing produits font figurer des produits à des prix erronés ou des produits non commandables… en raison de données non rafraichies.
- la mise à léchelle des systèmes de cache : la scabilité des systèmes tels que Memcached ou Redis (leur mise en cluster éventuelle) sur des systèmes très sollicités doit être étudiée en amont et peut nécessiter des compétences spécifiques. L’architecture système est alors grandement complexifiée.
-
Des extensions pour gérer plus efficacement le Full Page cache de Magento
Le mécanisme de Full Page Cache de Magento permet de stocker les pages Magento générées et les servir immédiatement aux clients. Pour autant servir des pages actualisées au bon moment sans forcément à la fois tout régénérer ou procéder à des recalculs trop fréquent est un véritable challenge.
Il existe de nombreux modules permettant d’améliorer cela notamment en rendant les process d’actualisation des données invisibles aux clients. Réchauffer (ou plutôt rafraichir) le cache est l’intérêt d’utiliser un module spécifique.
L’intérêt est multiple :
-
-
- Augmenter les taux de conversion de pages accélérées
- Améliorer le ranking et le SEO : les robots peuvent scanner plus de pages en moins de temps sur votre site du fait de leur vitesse de chargement.
- Améliorer l’accessibilité et l’expérience des clients
-
Amasty propose par exemple l’extension Full Page Cache Warmer qui permet de :
-
-
- Donner une priorité pour le rafraichissement des données
- L’automatisation des processus de mise en cache (mise en queue des process, mise à jour automatique de la version mise en cache lors d’une mise à jour d’une page ou d’un produit)
- Garder un oeil sur la mise en cache (à l’aide logs et de tableaux qui permettent de rapidement voir un problème de consommation excessif de ressources, des erreurs d’accès, la couverture du cache de Varnish…)
- Exclure certains blocs HTML de leur mise en cache.
-
Des services SaaS pour la mise en cache de vos pages
Nous l’avons vu dans l’article précédent consacré aux Firewall Applicatifs WAF que certains services SaaS apportent un service de cache en plus de leurs fonctions spécifiques.
En l’occurence ces services vont se comporter un peu comme un proxy Varnish.
On va citer quelques services tels que :
- les Firewall applicatifs type WAF
- les services améliorant les performances : tels que les services offerts par Fasterize dédiés à la web performance et capables de transformer les pages issues de Magento pour en servir des versions spécifiques et optimisées aux mobiles par exemple… (nous y reviendrons spécifiquement).
Booster votre business en accélérant votre site e-commerce ?
Vous souhaitez booster votre site Magento, améliorer votre image avec un site performant, accroître votre chiffre d’affaire grace à un meilleur taux de conversion et une expérience utilisateur améliorée ? Faites appel à nous ! Nous intervenons très rapidement sur Bordeaux, la région Nouvelle-Aquitaine et à distance.
Nous apportons les clés pour performer efficacement dans le respect de vos objectifs et de votre budget !