Notre blog

Patch Magento : Optimisation du temps de ré-indexation des URL

Patch Magento : Optimisation du temps de ré-indexation des URL produits et catégories

Dans le cadre de la veille quotidienne de notre pôle R&D destinée à optimiser toujours plus les site e-commerce de nos clients, nous publions aujourd’hui une extension d’optimisation d’un des index les plus gourmands de Magento : celui des URL !

Mais tout d’abord, qu’est ce qu’un index ?

Pour alléger les temps de traitement liés à la récupération d’informations bien spécifiques (telles que les stocks, Url, prix,…) contenues dans la base de données, Magento les regroupe dans des tables dites « d’index ».

Pour schématiser, il faut voir ces tables comme des paniers et les données comme des fruits. Il est bien plus rapide de distribuer des fruits à l’internaute avec son panier que de faire de nombreux aller-retours à l’étalage avec ces 2 mains ! 😉

Cependant, avant de pouvoir distribuer correctement ces informations, Magento doit remplir ou mettre à jour les index : C’est le processus de ré-indexation.

Ces processus peuvent être plus ou moins longs à s’exécuter et sont liés au volume des données de votre boutique et à la puissance de votre serveur.

Constat et problèmes rencontrés

Chez certains de nos clients possédant un très grand nombre d’URL distinctes, le temps de traitement de la ré-indexation «Catalog Url Rewrites» prenait parfois plusieurs heures à s’exécuter, que ce soit manuellement via le BackOffice, ou bien via une tâche CRON.

Pour de gros catalogues, cela peut poser les problèmes suivants :

  • Certaines modifications effectuées en BackOffice, nécessitant une ré-indexation des URL ne peuvent être mises à jour fréquemment à cause du temps de traitement ;
  • Parfois, le processus de ré-indexation n’aboutit pas ;
  • Si cette ré-indexation ne se termine pas correctement, certaines URL sont mal «ré-écrites» et peuvent vous pénaliser au niveau SEO ;
  • Exécutée en tâche CRON, il est parfois nécessaire d’augmenter considérablement la mémoire (PHP-CLI) ;
  • Tant que la ré-indexation des URL n’est pas terminée, les autres processus de ré-indexation ne peuvent démarrer.

 

Notre équipe R&D s’est alors penchée sur cette question :

Pourquoi la ré-indexation URL de Magento est-elle aussi longue ?

Nous avons alors constaté que Magento ne prenait pas en compte certaines configurations de la boutique ou des fiches produits.

  • En effet, si vous avez paramètré une gestion d’URL courtes pour vos fiches produits, Magento enregistre les 2 URL possibles (courtes & longues) dans sa table d’index.
  • Exemple :
    pour :
    www.my-site.com/product.html
    Magento enregistre aussi :
    www.my-site.com/category/product.html

  • Si votre produit est présent dans plusieurs catégories / sous catégories, il y aura donc autant d’URL longues générées que de combinaisons possibles…alors que celles-ci ne seront pas utilisées en Front.
  • Si votre produit est désactivé, donc non inaccessible depuis votre boutique, Magento index quand même son URL.
  • Idem pour les produits paramétrés en mode «non visible individuellement» qui sont en général utilisés comme déclinaison d’un produit configurable.
    Là encore, son URL est stockée en base de données…mais non utilisée pour le Front.
  •  

    Résolution et bénéfices :

    L’extension d’optimisation des index que nous avons développé permet une gestion plus fine des URL à générer (ou non) et améliore ainsi le temps de traitement.

    Bénéfices attendus pour votre boutique :

  • Le processus d’indexation des URL ne prend plus que quelques minutes au lieu de plusieurs heures (dans certains cas) ;
  • Etant plus rapide à s’exécuter, ce processus ne tombe plus en statut « Erreur » ou « En cours de traitement » ;
  • Vous n’avez plus d’erreurs 404 = Votre SEO n’est plus impacté ;
  • Votre serveur respire de nouveau car la consommation en mémoire RAM est diminuée lors de son exécution.

 

Benchmark

Pour vous donner un petit avant-goût des gains attendus, voici les premiers résultats obtenus sur des typologies de catalogue et configurations différentes.

Exemple :

Avec 9500 références (SKU), réparties (ou non) dans 900 catégories / sous catégories et en tenant des pages CMS, le nombre d’URL générées est d’environ 80 000 dans la table «Core_URL_Rewrite».

Le temps de ré-indéxation (lancé manuellement ou en CRON) est de l’ordre de 3h30 (12 600sec).

Après l’application de notre patch, ce temps de ré-indexation tombe à 1min !

D’autres exemples dans le tableau suivant :

Benchmark temps de ré-indexation des URL

 

On constate que le temps de ré-indexation diminue de manière significative.

A noter que nous avons également remarqué une légère amélioration des performances d’affichage du Front Office suite à l’activation de ce patch.

Installation & configuration

Notre extension «Patch_index_URL» est compatible pour toutes les versions de Magento CE & EE.
Elle est disponible :

 

Tout d’abord sauvegardez votre base de données puis installez l’extension sur votre site de développement mais pas en production !

Configuration de l'extension Magento DnD-Patch-index

  • En BackOffice, rendez-vous dans : > System > Configuration > Developer
  • Si l’extension n’est pas présente, purgez le «cache» Magento & les cessions, déconnectez vous puis re-connectez vous au backoffice.
  • Sélectionnez OUI pour le champ «Enable Optimisation»
  • Si vous n’avez pas d’intérêt à générer une URL pour les produits désactivés ou non visibles individuellement, sélectionnez OUI pour les 2 autres champs.
  • Sauvegardez
  • Rendez vous dans la gestion des index et ré-indexez uniquement celui des URL.

 

En fonction de la configuration choisie le temps de traitement devrait nettement diminuer.

Vos commentaires, retours et benchmarks sont les bienvenus ! 🙂

  1. Ping : Ecommerce Squad : le Ecommerce, coté techniqueLe patch contre les lenteurs de ré-indexation de Magento
  2. alléluia!
    après x heures à chercher comment ré-indexer uniquement les produits configurables (du moins exclure les non visibles individuellement), j’ai trouvé votre module et en 2 mn , le pb est résolu.
    Version 1.7.0, pb de ré-indexation url toujours en cours , même en vidant la table core_url_rewrite sans solution, même après avoir vérifié la base, les foreign key etc…
    merci!

  3. Merci beaucoup ! 🙂

    Nous avions justement un gros problème de réindexation des URL, du coup, il était carrément désactivé et jamais lancé manuellement sous peine de bloquer le serveur pendant 6 à 8h !

    Alors encore merci, c’est un patch comme je les aime !

    Cordialement,
    Christophe.

  4. Incroyable. J’ai 19000 références. Moins d’une minute, alors qu’il fallait au moins 30 minutes avant.
    Un trés grand bravo. Merci

  5. Juste un mot : MERCI !

    Une semaine que je galérais avec mon Magento 1.7.0.2. qui faisait tomber régulièrement mon serveur dédié lors des indexations interminables (au bout d’un temps d’une requête trop longue le serveur se met en rideau par sécurité).

    Je suis passé d’environ deux bonnes heures de temps d’indexation à… 6 minutes ! Ca paraît presque irréel tellement le gain de temps est impressionnant : 95% au bas mot dans mon cas !!!

    En plus le fait de fournir le patch gratuitement est vraiment un don du ciel ! Vous êtes des magiciens les gars, BRAVO !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *