Article mis à jour le 5 septembre 2012

Magento, contrairement à d’autres applications en PHP, a besoin d’un minimum d’optimisations côté serveur pour le faire tourner dans de bonnes conditions. En effet dès que vous commencez à avoir un trafic conséquent ou plusieurs Magento qui tournent sur le même serveur gare à la charge !

APC

Alternative PHP Cache est un « gestionnaire de cache d’opcode » qui effectue une sorte de précompilation des scripts PHP pour gagner du temps à l‘éxécution. Il peut également prendre en charge le cache de vos applications, dont Magento.

Facile à installer, il est malheureusement mal configuré par défaut, du moins trop faiblement.

Configuration que j’utilise, d’après cet article , à mettre à la fin de php.ini :

apc.shm_size=256
apc.num_files_hint=10000
apc.user_entries_hint=10000
apc.max_file_size=5M
apc.stat=0

Pour résumer, le premier paramètre est le plus important: c’est la quantité de RAM maximum alloué à APC pour faire son boulot. Il est par défaut à 80 Mo ce qui est largement insuffisant pour Magento étant donné la quantité impressionnante de fichiers (1 fichier = 1 entrée de cache).

Le dernier mérite votre attention: activé (à 1), il va vérifier la date de modification de chaque fichier pour mettre à jour l’entrée de cache correspondante si nécessaire. Désactivé il se passe de cette vérification ce qui fait gagner en performance. Je vous conseille de le désactiver sur un serveur de production et de l’activer sur un serveur de développement, sinon vous aurez à vider le cache APC à chaque modification de vos fichiers.

MySQL

Les tables Magento utilisant le moteur de stockage InnoDB, il faut veiller à sa bonne configuration. Le paramètre à rajouter ou modifier dans my.cnf est ici innodb_log_file_size qui est par défaut trop faible. Attention je vous recommande de faire attention à vos opérations, le changement de ce paramètre nécessite notamment de supprimer des fichiers d’historique.

Modules apache

Comme sur tout serveur digne de ce nom n’oubliez pas les incontournables mod_deflate, mod_headers et mod_expires qui permettent de compresser les données envoyées ainsi que gérer le cache client.

Backoffice magento

Cache

Activez les caches dans Système > Gestion du cache. Si vous avez installé APC exploitez le à fond en l’utilisant également pour le cache applicatif en rajoutant ceci dans le nœud <global> de votre local.xml:

<cache>
  <backend>apc</backend>
  <prefix>CLE_</prefix>
</cache>

Où « CLE » est une chaine unique pour chaque site tournant sour magento, le nom du site par exemple.

Flat catalog

Activez le « Flat catalog » dans Système > Configuration > Catalogue > Frontend > Catalogue à plat, puis vous aurez besoin de ré-indexer les données dans Système > Index management. Ce catalogue à plat est une version optimisée des données pour la partie font-end

Compilation

Activez la compilation dans Système > Outils > Compilation. Cela permet de regrouper les fichiers de librairie et d‘éviter ainsi trop de consultation du disque.

Au final

Bien sûr tout ceci est loin d‘être complet, mais ces optimisations ont le mérite de prendre assez peu de temps et peuvent s’avérer vite indispensables. Elles représentent à mon sens le meilleur rapport performance gagné/temps passé, temps si précieux dans les petites agences qui ont rarement à leur disposition un administrateur système à temps plein.

Lannoy
Jean-philippe
Développeur