optimise
E-commerce

Optimiser la performance d’une plateforme e-Commerce Magento

Par Audrey le 26 décembre 2011

 Lecture 6 minutes

« Comment optimiser la performance d’une plateforme Magento ? » Voilà une question récurrente à laquelle nous avons souhaité apporter quelques éléments de réponse. La solution e-Commerce Magento est souvent confrontée à de nombreuses critiques concernant ses performances. On entend souvent parler de la « lenteur » de Magento, face à d’autres solutions E-commerce. Mais c’est là une parole de néophyte. Une parole d’expert serait : « Magento est lent quand il est mal implémenté ». En effet, du fait de sa souplesse et de ses (très) nombreuses fonctionnalités, Magento souffre de lenteurs quand il n’est pas bien configuré. Mais cette plateforme e-commerce propose d’innombrables fonctions d’optimisation en standard. Nous allons en citer quelques unes et vous les expliquer.
  • Une gestion optimale du Cache
  • L'activation du Compilateur
  • L'utilisation du Flat-Catalog

Une gestion optimale du cache

Tout d’abord, qu’est ce que « le cache » ? Ce principe n’est pas inhérent à Magento. Il est très souvent utilisé dans les systèmes d’informations lourds. Le plus simple, est de vous présenter un exemple concret :

Prenons par exemple, l’affichage d’une fiche produit dans Magento. Cela se déroule en plusieurs étapes :

  • ETAPE 1 : L’utilisateur demande la page web
  • ETAPE 2 : Le serveur prend en charge la demande
  • ETAPE 3 : Le serveur procède aux traitements (quel produit afficher ? Ce produit est il disponible ? etc)
  • ETAPE 4 : Le serveur créé la page et la transmet à l’utilisateur
  • ETAPE 5 : L’utilisateur voit la page s’afficher.

En termes de performances, le plus souvent, le goulot d’étranglement se situe au niveau des traitements serveur (étape 3).

Le principe de cache revient à stocker la demande effectuée (étape 1) par l’utilisateur et les éléments renvoyés associés (étape 4). Ainsi, lors d’une future demande identique (de cet utilisateur ou d’un autre), le serveur n’aura pas à procéder aux traitements (étape 3) et affichera directement la page à afficher.

Magento dispose d’un système de cache très élaboré. Malheureusement, celui-ci est sous exploité par la plupart des intégrateurs. Il faut en effet procéder à de nombreuses optimisations lors du développement afin d’améliorer les performances de Magento.

En standard, seuls l’entête et le pied de page du site utilisent ce procédé. Afin de rendre le site le plus rapide possible, il convient donc de procéder à la mise en cache des éléments suivants :

  • Tout ou partie de le page d’accueil
  • Fiche produitcache_magento
  • Listing produit (si le flat Catalog n’est pas activé (voir ci-dessous))

Le cache n’est pas à négliger. Sur le site Odlo par exemple, les temps de chargement de page avec et sans cache sont les suivants (sur la homepage).

On observe un gain de performance de 1000% !

En conclusion, un Magento qui n’utiliserait pas correctement le cache serait extrêmement lent. Il faut donc faire appel à des experts capables de mettre en place cette
optimisation de façon efficace.

L'activation du compilateur

compilateur_magento

Magento est basé sur une architecture très complexe composée de multiples dossiers et fichiers. Ces fichiers sont exploités par l’application à chaque chargement de page.
Cela provoque d’importantes recherches du serveur à travers tous ces dossiers. Ces recherches provoquent des accès disques importants.

Dans le cadre d’architectures serveur basées sur des disques durs SSD (bien plus rapides que les disques « classiques »), ce phénomène de recherche n’est pas très impactant. Par contre, sur des disques durs moins performants, la recherche peut ralentir les performances de 25% !

Magento propose donc une solution pour court-circuiter ce phénomène. Il s’agit du « compilateur ». Le principe du compilateur est tout simplement de réduire les recherches en plaçant le maximum de fichiers dans un seul dossier. De cette façon, Magento n’a plus à procéder aux recherches. Il utilise directement ce dossier.

Selon l’architecture, ce procédé peut faire gagner jusqu’à 25% en temps d’affichage. Cela n’est pas négligeable et doit être utilisé dans le cadre d’architectures peu véloces.

Nous avons par exemple testé Magento sur un plan mutualisé OVH. Celui-ci était très lent.Une fois la compilation activée, les temps d’accès sont devenus convenables. (Malgré tout, nous recommandons plus que vivement d’utiliser des serveurs dédiés ou virtualisés, plutôt que des espaces économiques mutualisés pour héberger une plateforme E-commerce, Magento en tête, mais ceci fera l’objet d’un autre Regard d’Experts !)

L’utilisation du flat-catalog

Le terme de Flat-Catalog est souvent utilisé dans Magento. Il s’agit en fait d’une simplification du schéma de base de données. Mais qu’est ce que cela signifie ?

Magento est basé sur un modèle dit « EAV » (Entity, Attribute, Value). Ce modèle est celui qui permet, par exemple, d’ajouter des attributs à volonté sur le produit (couleur, taille, etc), et cela, dans via l’administration, de façon simplifiée.

Il permet donc une grande souplesse. Malheureusement, ce modèle nécessite un schéma de base de données très complexe car il faut stocker les attributs, leur nom, leur type (texte, image, etc) ainsi que la liaison entre attributs et produits, etc.

Les appels du serveur à la base de données sont donc particulièrement lents sur Magento.

flatcatalog_magento-228x150Afin de réduire ces temps d’accès, Magento propose une solution d’indexation de ces données : le Flat-catalog. Le procédé permet de placer toutes ces informations au sein d’un seul espace (« table » MySql).

Ainsi, lorsque Magento devra accéder à une donnée, il passera directement sur cette table plutôt que de recherche au travers de dizaines d’entre elles.

Cela n’est pas négligeable. En effet, en activant le Flat-catalog on observe, selon les requêtes effectuées sur la base de données, des gains de performances allant jusqu’à 1000%.

 

Conclusion

En réalité, il serait très mal venu de dire que Magento est lent. C’est un système robuste, qui a fait ses preuves et qui dispose d’un large panel d’outils permettant d’optimiser ses performances.

Ces outils peuvent être implantés ou non, au bon vouloir des développeurs. Mais cette implantation se révèle en définitive impérative. Seuls des experts sauront quelle solution d’optimisation est la plus adaptée (en fonction du serveur, de la complexité du projet, etc). Et seuls des experts sauront comment implanter correctement ces solutions.

Il est par contre dommage que ces considérations n’entrent pas en ligne de compte, ou très rarement, lorsque un webmarchand sélectionne son partenaire intégrateur. La capacité de l’intégrateur à surperformer dans la mise en œuvre et l’optimisation de votre plateforme Magento conditionnera directement la performance de l’ensemble de la plateforme et aura un impact considérable sur la réussite voir la viabilité de votre projet. Veillez à en tenir compte !!

Magento est une plateforme E-commerce puissante. A nous de savoir l’exploiter !

Découvrez également...