Détails du projet
Le gros point faible de magento est sa performance. Bien qu’ayant une notion de cache, celle-ci n’est pas suffisante pour avoir des temps de réponses acceptables (<1 sec, 2sec max).
On avait donc plusieurs solutions qui s’offraient à nous :
- Mettre un proxy http (varnish) qui va gérer le cache avec turpentine => Version luxe de l’optimisation
- Installer un module de full page cache sur magento qui met en cache l’intégralité des pages réponses html
Par manque de temps et de moyen, nous avons privilégié la seconde solution qui ne touchaient pas l’infrastructure mais seulement le code source du magento. On a donc choisi d’utilise le module de FPC (full page cache) de amasty.
Une fois celui-ci installé, on peut définir les blocs à ne pas mettre en cache. Par exemple le mini panier en haut à droite qui est une partie dynamique. Une fois ces zones identifiées, il suffit de les indiquer dans un fichier de configuration pour qu’elles soient générées à chaque chargement (dans le fichier app/etc/amfpc.xml.
On peut choisir de stocker le cache dans des fichiers, redis ou memcache, je vous conseille une des deux dernières solutions si votre infrastructure vous le permet.
Une fois tout bien configuré le principe est simple :
- L’utilisateur demande une page, si elle est en cache, il la génère et la met en cache (un peu long)
- Le prochain utilisateur qui demande la même page, elle lui sera servie presque instantanément.
Cette optimisation a permis de gagner environ 400% de temps de chargement sur les pages :
Min | Moyenne | Max | |
Avant | 659ms | 974,6ms | 2367,2ms |
Aprés | 180,7ms | 212,5ms | 498,3ms |