Pour un site de e-commerce, la performance est un levier clé pour augmenter le taux de conversion et donc, ultimement, les ventes et le chiffre d’affaires. NBS System, premier hébergeur Magento Entreprise Edition en France, vous donne ses conseils pour optimiser votre site Magento.

Optimisation via PHP

  • Migrez vers les dernières versions de PHP, au moins vers PHP 5.6.
  • Utilisez PHP FPM (FastCGI Process Manager) plutôt que Mod PHP : (+18% de performances). Nous vous conseillons une architecture à 3 tiers pour une meilleure séparation des fonctions (view, logic, data), une meilleure stabilité et une meilleure utilisation des ressources. Cette configuration facilite également le troubleshooting, et vous donne la possibilité de donner la priorité et booster certaines couches selon vos besoins.

Vérifiez ici quelles versions sont disponibles selon votre version de Magento :

Captureversions

CE : Community Edition / EE : Enterprise Edition

Optimisation de votre base de données

  • Migrez là encore vers la version 5.6 de MySQL. Cela représente une augmentation de 17% de la performance par rapport à la version 5.5 !
  • Utilisez Percona. C’est est un logiciel opensource très efficace d’optimisation de la performance des bases de données. Nous avons observé des améliorations de performance de l’ordre de 20%, et cela sans changer quoi que ce soit à votre organisation ou méthode de traitement !
  • Séparez vos tables. Il est plus simple dans ce cas de personnaliser leurs paramètres ! Cela permet également de séparer les « read » et « write », ainsi que les requêtes, qui ne risquent plus de se gêner les unes les autres. Cela apportera également plus de granularité à votre site.
  • Nettoyez régulièrement votre base de données et défragmentez-la :DB SQL
  • Configurez tous les index sur le mode manuel afin de ne pas surcharger votre frontend à chaque modification d’un produit
  • Permettez l’utilisation de « flat catalog » pour vous soustraire du modèle EAV (Entity – Attribute – Value), très critiqué pour les baisses de performances qu’il engendre.

Optimisation via le cache

  • Utilisez les paramètres suivants :
    • <slow_backend_store_data>0</slow_backend_store_data>
    • <auto_refresh_fast_cache>0</auto_refresh_fast_cache>
    • <compress_data>0</compress_data>
    • <compress_tags>0</compress_tags>
    • <lifetimelimit>86400</lifetimelimit>
  • De même, pour les sessions :
    • <timeout>3</timeout> <!– 2.5 can lead to problems –>
    • <max_concurrency>10</max_concurrency>
  • Approuvez tous les caches de la boutique, et utilisez le backend de cache de Redis.

Optimisation du code

  • Limitez la complexité de votre code CSS et JavaScript : des fichiers moins lourds seront plus rapides à charger. Ne les funsionnez pas non plus avec la fonction proposée par défaut : c’est une bonne pratique en théorie, mais impacte souvent négativement la performance sur Magento. Vous pouvez, en revanche, le faire en divisant vos requêtes par groupe (requêtes globales / requêtes spécifiques par type de page, comme les pages produits ou le checkout)
  • Faites attention aux plugins. La majorité des plugins proposés ne sont pas testés par Magento et sont souvent mal codés ou mal optimisés. De plus, si vous en utilisez trop, cela ralentira l’ensemble de votre site.
  • MagentoSi vous créez vous-même des plugins, gardez ces quelques conseils en tête :
    • Vos blocs supplémentaires ne sont pas reconnus par le cache de Magento
    • Faites attention à éviter les requêtes « natural join » infinies
    • Monitorez votre site avant et après l’ajout de votre code afin d’en mesurer les conséquences
    • Ne touchez jamais, JAMAIS le core
  • Vos templates doivent rester simples.
    • Ne les surchargez pas de fonctionnalités inutiles ou de trop d’extensions ou gadgets (médias sociaux, outils de tracking : limitez-vous à l’essentiel)
    • Gardez un design ergonomique et facile à lire
    • Utilisez Ajax et évitez les erreurs de code
  • Adaptez la taille de vos images
  • Evitez les informations risquant de désactiver Varnish ou FPC

En vrac, quelques idées supplémentaires

  • Adoptez la méthode « Un serveur, un rôle »
    • Cache : séparez les instances Redis, et même les bases de données Redis si vous le pouvez (en particulier si votre site est multi-store).
    • PHP :
      • Utilisez FPM
      • Séparez vos tunnels BO/FO/Order via SSL
    • Base de données :
      • Séparez les « read » des « write »
      • Isolez les tables les plus demandées dans une instance spécifique
  • Paramétrez la profondeur maximale de votre navigation à 1 ou 2. Si vous gardez la valeur par défaut de 0, votre frontend chargera la structure entière à chaque page.
  • Trouvez un équilibre entre le nombre de produits exposés sur chaque page et le temps de chargement. N’oubliez pas de désactiver le paramètre « allow all products per page… ».
  • Désactivez le Profiler Magento, cela peut vous faire gagner jusqu’à deux secondes sur le temps de chargement total.
  • Trouvez vos erreurs 404 et traitez-les : pour chaque élément 404, ce sont au minimum 80ms de plus de chargement…
  • Utilisez PageSpeed, un outil d’optimisation.

Ces informations sont tirées de :

  • la présentation « Magento Performances – best practices 2015 » réalisée et présentée par Philippe Humeau, Directeur Général de NBS System, lors du Bargento 2015 le 13 octobre dernier.
  • le blog de Sonassi
Lucie Saunois
Lucie Saunois
Passionnée d'informatique, en particulier de sécurité, depuis qu'elle a rejoint l'OT Group en 2015, Lucie se spécialise dans la vulgarisation technique pour permettre à tous d'appréhender ces sujets parfois complexes.