Table des matières de l'article :
Lors du Black Friday, l’une des périodes les plus critiques de l’année pour les sites e-commerce, chaque milliseconde compte. Les plateformes doivent être prêtes à gérer une charge de trafic exceptionnelle sans compromettre les performances ou l'expérience utilisateur. Récemment, nous avons été sollicités par un client pour optimiser au maximum son site WooCommerce en prévision de l'augmentation des demandes. Lors de cette opération, nous avons identifié et résolu un problème de performances lié au plugin SPOKI, une solution italienne de gestion des paniers abandonnés et d'automatisation des ventes.
Dans cet article, nous vous expliquons le chemin qui nous a amené à identifier le problème, comment nous l'avons résolu et comment cette optimisation a amélioré les performances globales du système.
Qu’est-ce que SPOKI et à quoi sert-il ?
SPOKI est une plateforme développée en Italie, conçue pour aider les entreprises de commerce électronique à améliorer leurs performances commerciales grâce à l'automatisation et à la gestion optimisée des paniers abandonnés. Il s'agit d'une solution moderne et polyvalente, intégrable à WooCommerce, le système de commerce électronique le plus populaire au monde, et conçue pour faciliter la connexion entre les boutiques en ligne et les clients.
L'une des principales caractéristiques qui distingue SPOKI est sa capacité à automatiser la récupération des paniers abandonnés. Lorsqu'un client ajoute des produits à son panier mais ne finalise pas l'achat, SPOKI envoie des notifications automatiques pour lui rappeler la commande incomplète, en utilisant des stratégies ciblées pour augmenter la probabilité de conversion. Ce processus repose sur une analyse intelligente du comportement des utilisateurs, garantissant que les notifications sont pertinentes et opportunes.
Une autre caractéristique notable est laintégration avec WhatsApp, un canal de communication désormais incontournable pour interagir avec les clients. SPOKI utilise cette plateforme pour envoyer des messages directs, des notifications de récupération de panier, des promotions personnalisées et des mises à jour de commandes. Cette approche vous permet d'établir une relation plus directe et personnelle avec les utilisateurs, améliorant ainsi l'expérience client et augmentant le taux de conversion.
Enfin, SPOKI propose des outils avancés pouroptimisation des conversions, combinant les données collectées lors des interactions avec les clients et des fonctionnalités pour automatiser les campagnes marketing. Le résultat est une plateforme qui non seulement facilite la récupération des ventes perdues, mais contribue activement à la croissance globale des performances de la boutique en ligne.
Parmi ses principales caractéristiques figurent :
- Récupérateur des Carrelli Abbandonati : SPOKI envoie des notifications automatisées aux clients qui ont quitté le site sans finaliser leur achat, les encourageant à revenir.
- Intégration WhatsApp : La plateforme exploite le canal de messagerie populaire pour interagir avec les clients en temps réel.
- Optimisation des conversions : Grâce à une combinaison d'outils et de données, SPOKI aide les boutiques en ligne à maximiser leurs ventes.
SPOKI est conçu pour s'intégrer à WooCommerce, le système de commerce électronique le plus utilisé au monde, et est particulièrement apprécié pour sa facilité d'utilisation et sa capacité à augmenter le taux de conversion des boutiques en ligne.
Cependant, comme tout logiciel, SPOKI est confronté aux défis liés aux environnements à fort trafic, en particulier lors d'événements commerciaux comme le Black Friday.
Pourquoi choisir SPOKI ?
SPOKI représente un choix idéal pour ceux qui gèrent une boutique en ligne et souhaitent améliorer leurs performances sans avoir à faire face à des complexités techniques. L'une de ses particularités est la facilité d'utilisation, ce qui le rend adapté aussi bien à ceux qui débutent dans le commerce électronique qu'aux professionnels expérimentés. Grâce à une interface intuitive et une configuration rapide, SPOKI vous permet de mettre en œuvre des outils avancés tels que la récupération des paniers abandonnés et des campagnes d'automatisation sans avoir besoin d'interventions techniques complexes.
Impact immédiat sur les ventes
L'un des principaux atouts de SPOKI réside dans son impact immédiat sur les ventes. La plateforme est conçue pour générer des résultats tangibles dans un court laps de temps, grâce à sa capacité à analyser le comportement des utilisateurs et à intervenir de manière ciblée. Par exemple, l'envoi de notifications personnalisées en temps opportun aux clients qui ont abandonné leur panier peut ramener un pourcentage important d'utilisateurs au magasin, augmentant ainsi le taux de conversion de manière directe et mesurable.
Conçu pour le marché italien et international
Étant un produit développé en Italie, SPOKI est particulièrement adapté au commerce électronique local, en comprenant sa dynamique, ses besoins et ses particularités. Cette connaissance du marché se traduit par des fonctionnalités conçues pour répondre à des défis spécifiques, comme la gestion des réglementations locales en matière de confidentialité ou l'adaptation des campagnes de communication aux habitudes des consommateurs italiens mais aussi internationaux.
Le défi du Black Friday et une charge anormale de la base de données
En vue du Black Friday, l'une des périodes les plus critiques pour le e-commerce, un de nos clients possédant une grande boutique WooCommerce nous a demandé de vérifier que sa plateforme était optimisée pour faire face au pic de trafic imminent. Il s'agissait d'un site avec un volume de produits élevé et une large base de clients, déjà bien configuré avec plusieurs optimisations de gestion des performances. Cependant, lors des tests préliminaires, nous avons remarqué un comportement anormal : la charge du serveur était inhabituellement élevée, avec des pics dépassant le niveau acceptable pour garantir une expérience fluide aux utilisateurs.
La situation nécessitait une enquête approfondie. Nous avons commencé par analyser les journaux du serveur et surveiller les ressources de la base de données pour détecter les goulots d'étranglement. C'est alors que nous avons découvert un schéma récurrent : une requête SQL générée par le plugin SPOKI qui consommait une quantité disproportionnée de ressources.
La requête problématique était la suivante :
SELECT COUNT(*) FROM wp_spoki_setting
Cet appel, exécuté à plusieurs reprises pendant le processus d’initialisation du plugin, s’est avéré être la cause première de la surcharge. SPOKI, utilisé par le client pour gérer les paniers abandonnés et automatiser les interactions client, a accédé à une table spécifique dans la base de données (wp_spoki_setting
) pour vérifier la présence de données de configuration.
L'impact sur le système
La requête SELECT COUNT(*)
, qui sert à compter tous les enregistrements de la table, peut sembler inoffensif sur de petites bases de données. Cependant, dans le cas spécifique de notre client, le tableau wp_spoki_setting
il contenait environ 14 millions d'enregistrements, en raison du volume d'affaires élevé généré par le commerce électronique au fil des années. Ce contexte a transformé une opération simple en un processus très fastidieux pour la base de données.
Chaque exécution de requête a pris environ 1 selon à compléter. Même si cela peut sembler peu de temps, la répétitivité de l’appel lors des opérations du plugin a eu un impact cumulatif dévastateur. Lors des tests, nous avons observé que la requête était exécutée suffisamment fréquemment pour générer un surcharge importante sur le serveur, portant la charge moyenne du système à des valeurs supérieures à 9, bien au-dessus du seuil recommandé pour un environnement stable.
Une requête absolument inutile
En analysant en détail le code du plugin SPOKI, nous avons découvert que la requête problématique SELECT COUNT(*) FROM wp_spoki_setting
avait un rôle étonnamment limité : son seul but était de vérifier les enregistrements dans la table de configuration du plugin (wp_spoki_setting
). Il n’était pas vraiment utilisé pour obtenir le nombre exact d’enregistrements, ni pour des opérations ultérieures nécessitant ces données spécifiques.
Cette question était donc non seulement excessivement lourde par rapport à son objectif, mais elle aboutissait également à totalement redondant. Pour établir la présence de données dans un tableau, il n'est pas nécessaire de compter tous les enregistrements, surtout dans un contexte où le nombre total peut dépasser des millions de lignes, comme dans le cas de notre client. Cette approche s'est révélée particulièrement inefficace et a généré un impact important sur la base de données, avec un gaspillage de ressources disproportionné par rapport à son utilité.
L'utilisation de SELECT COUNT(*)
cela n'est justifié que lorsque vous avez besoin d'un décompte précis des enregistrements à des fins statistiques ou pour des opérations ultérieures, mais ce n'était pas le cas. SPOKI nécessitait simplement une vérification booléenne, c'est-à-dire vérifier si un ou plusieurs enregistrements étaient présents dans la table, sans avoir besoin de connaître leur quantité. La raison était de vérifier uniquement s'il avait été installé correctement et si le tableau était présent comme le montre le code PHP ci-dessous que vous pouvez enregistrer /wp-content/plugins/spoki/modules/abandoned-carts/spoki-abandoned-carts-db.php
.
public function init_tables() { global $wpdb; $spoki_setting_tb = $wpdb->prefix . SPOKI_SETTING_TABLE; if ($wpdb->get_var("SHOW TABLES LIKE '$spoki_setting_tb'") !== $spoki_setting_tb) { error_log('Error: Table does not exist: ' . $spoki_setting_tb); return; } $meta_count = $wpdb->get_var("SELECT COUNT(*) FROM $spoki_setting_tb"); if ((!$meta_count)) { $env_file_path = SPOKI_DIR . '/.env'; if (file_exists($env_file_path)) { $meta_data = parse_ini_file($env_file_path); if ($meta_data === false) { error_log('Error: Failed to parse .env file at ' . $env_file_path); return; } $meta_data["access_token"] = md5(uniqid(wp_rand(), true)); foreach ($meta_data as $meta_key => $meta_value) { $wpdb->insert( $spoki_setting_tb, array('meta_key' => $meta_key, 'meta_value' => $meta_value), array('%s', '%s') ); } } else { error_log('Warning: .env file not found at ' . $env_file_path); } } }
Cela a mis en évidence non seulement une opportunité d’optimisation, mais aussi une mise en œuvre peu attentive aux bonnes pratiques, ce qui peut devenir problématique dans des contextes à fort trafic ou sur des bases de données volumineuses.
La solution : une approche plus efficace des requêtes SQL
Pour résoudre le problème, nous avons modifié le code en remplaçant la requête SELECT COUNT(*)
avec une version plus légère et optimisée :
$meta_count = $wpdb->get_var("SELECT 1 FROM $spoki_setting_tb LIMIT 1");
La nouvelle requête recherche simplement au moins un enregistrement dans la table, sans avoir à compter tous les enregistrements. Grâce à l'utilisation de LIMIT 1
, la requête s'arrête dès qu'elle trouve le premier enregistrement, ce qui réduit considérablement la charge sur la base de données.
Les résultats : des performances améliorées
Après avoir appliqué ce changement, nous avons effectué une série de tests pour évaluer l’impact sur les performances. Voici les résultats :
- Temps d'exécution de la requête : Réduit d'environ 1 seconde à quelques millisecondes.
- Charge moyenne du serveur : Diminué de 9 à 1,4.
- Réactivité générale du site : Considérablement amélioré, même sous forte charge.
Cette optimisation a non seulement réduit le temps de réponse de la base de données, mais a également rendu l'ensemble du système plus stable et prêt à gérer l'augmentation du trafic du Black Friday.
Pourquoi cette optimisation est importante
Les événements commerciaux comme le Black Friday représentent des moments cruciaux pour tout e-commerce. Pendant ces périodes, le trafic sur le site peut augmenter de façon exponentielle, mettant à rude épreuve l’ensemble de l’infrastructure technique. Dans ce contexte, même un petit goulot d'étranglement, comme une requête inefficace ou un code non optimisé, peut avoir des répercussions dévastatrices : ralentissements, temps d'arrêt ou, pire encore, paniers abandonnés en raison d'une mauvaise expérience utilisateur.
L'optimisation des requêtes SQL dans le plugin SPOKI, que nous avons réalisée pour notre client, met en évidence quelques enseignements clés pour les gestionnaires de plateformes de commerce électronique, notamment pendant les périodes de forte intensité.
Surveiller votre charge est fondamental
Un chantier qui semble bien fonctionner dans des conditions normales peut cacher des pièges qui n’apparaissent que sous pression. Les tests de charge et la surveillance des ressources sont des outils indispensables pour identifier les goulots d'étranglement avant qu'ils ne deviennent un problème. Dans notre cas, la requête problématique n’aurait jamais déclenché d’alarme lors d’une utilisation standard, mais à mesure que le Black Friday approchait et que les demandes simultanées augmentaient, son impact négatif est devenu évident.
Analysez soigneusement les requêtes SQL
Les requêtes SQL sont l'un des éléments les plus critiques pour la performance d'un site e-commerce. Même une seule requête inefficace peut ralentir l’ensemble du système, en particulier lorsqu’il fonctionne sur de grandes bases de données. L'habitude d'utiliser des requêtes comme SELECT COUNT(*)
, apparemment inoffensif, peut devenir un problème important dans des contextes à fort trafic. Analyser chaque requête pour s'assurer qu'elle est optimisée et nécessaire est essentiel pour éviter de gaspiller des ressources.
Les optimisations ciblées font la différence
Les modifications que nous avons apportées au plugin SPOKI sont un parfait exemple de la façon dont une petite intervention ciblée peut conduire à des améliorations significatives. Le remplacement de la requête inefficace par une requête plus légère a considérablement réduit la charge sur la base de données, améliorant ainsi les performances globales du site. Ce type d'intervention est particulièrement utile car il ne nécessite pas de changements radicaux ou coûteux, mais se concentre sur des domaines spécifiques qui ont un impact élevé.
Réduisez les risques pendant les pics de circulation
Des événements comme le Black Friday ne pardonnent pas les erreurs. Les clients s'attendent à une expérience rapide et fluide, et un site lent peut rapidement perdre en crédibilité et en ventes. Optimiser chaque aspect de la plateforme avant ces événements n’est pas seulement une bonne pratique, mais une nécessité. Dans notre cas, l'optimisation du plugin SPOKI a évité des problèmes qui auraient pu compromettre l'ensemble du fonctionnement du client.
Assurer une évolutivité à long terme
Les optimisations ne concernent pas seulement la gestion des urgences : elles servent également à garantir que le système puisse croître sans problème au fil du temps. Une requête inefficace n’est peut-être pas un problème aujourd’hui, mais elle le deviendra inévitablement à mesure que le trafic et le volume de données augmentent. Agir tôt signifie se préparer à faire face non seulement au Black Friday, mais également à tout autre défi à venir.
Une approche multidisciplinaire
Bien que notre activité principale soit l'hébergement et les systèmes avancés, il existe des situations où cela est nécessaire aller au-delà de notre rôle traditionnel pour garantir une efficacité maximale aux clients. La résolution du problème lié au plugin SPOKI en est un exemple : nous ne nous sommes pas limités à observer une anomalie de charge sur le serveur, mais nous avons entrepris un véritable chemin de ingénierie inverse, en partant des symptômes pour aller à la racine du problème.
L'enquête a commencé par l'analyse des données brutes de charge du serveur, puis par une analyse du comportement de la base de données pour identifier les requêtes anormales. Une fois que nous avons identifié la requête problématique, nous avons creusé encore plus profondément, en examinant le code source du plugin pour comprendre exactement pourquoi il était inefficace. Ce processus nécessite compétences transversales, allant de l'analyse des performances des bases de données à la compréhension du langage PHP, jusqu'à la capacité d'évaluer l'impact informatique des opérations.
Dans ces cas-là, il est essentiel de savoir « mettre la main à la pâte » : il ne suffit pas de diagnostiquer un problème, il faut intervenir directement sur le code lorsque cela est possible, en respectant toujours l'intégrité du logiciel. Cette approche multidisciplinaire, qui combine des connaissances en ingénierie des systèmes, en calcul, en complexité algorithmique et en développement, nous permet de proposer des solutions complètes et efficaces, même dans des scénarios complexes. La technologie n’a pas de compartiments étanches, et souvent la clé pour résoudre un problème réside dans la combinaison de compétences qui dépassent notre champ d'action principal.
Reporting à l'entreprise manufacturière
Après avoir terminé nos tests et vérifié l'impact positif de l'optimisation, nous avons immédiatement pris des mesures pour signaler le problème à l'entreprise manufacturière SPOKI. Le lendemain, nous avons envoyé un email détaillé à leur support technique, expliquant le problème rencontré et apportant la solution mise en œuvre. Dans le message, nous avons souligné l'importance d'inclure cette optimisation dans la prochaine version du plugin, en espérant que le changement profitera à tous les utilisateurs de SPOKI, notamment dans des contextes à fort trafic comme le Black Friday.
En plus de la communication directe par e-mail, nous avons également ouvert une demande d'assistance officielle dans le répertoire des plugins WordPress, partageant notre analyse et suggestion d'optimisation. Le fil de discussion est accessible au public à l'adresse : https://wordpress.org/support/topic/optimization-suggestion-for-spoki-plugin-to-improve-woocommerce-performance/. Cette étape a été prise non seulement pour signaler le problème aux développeurs, mais également pour mettre à la disposition de la communauté une étude de cas pouvant aider d'autres utilisateurs à reconnaître et à résoudre des problèmes similaires.
Avec cette double action, nous voulions nous assurer que le problème n'est pas seulement pris en charge par l'entreprise de fabrication, mais qu'il peut générer un impact positif à long terme sur l'ensemble de la base d'utilisateurs du plugin.
Conclusions et suggestions
Cette expérience montre que chaque détail compte lorsqu'il s'agit d'optimiser un e-commerce. Il ne suffit pas de se concentrer sur les domaines visibles comme le frontend ou les campagnes marketing : le backend et la base de données doivent également être efficaces et prêts à gérer des charges élevées. Investir dans des optimisations ciblées et des tests réguliers améliore non seulement les performances, mais garantit également que l'expérience utilisateur reste impeccable, quels que soient les défis. Et comme le démontre le cas de notre client, ces optimisations peuvent faire la différence entre un Black Friday réussi et une opportunité manquée.
Notre analyse a mis en évidence comment même des outils avancés comme SPOKI peuvent bénéficier d'une évaluation des performances, en particulier dans les situations à fort trafic. Nous avons partagé notre solution avec l'équipe de développement SPOKI, en suggérant d'intégrer ce changement dans les futures versions du plugin.
Pour ceux qui gèrent un e-commerce, voici nos conseils :
- Préparez-vous à l’avance aux pics de trafic : Planifiez des tests de charge et des optimisations avant les événements de vente.
- Analysez les plugins installés : Même les meilleurs plugins peuvent cacher des problèmes de performances.
- Collaborez avec des experts : Se tourner vers une équipe spécialisée peut faire la différence dans les moments critiques.
Nous sommes fiers d'avoir aidé notre client à surmonter ce défi et d'avoir contribué à améliorer les performances de SPOKI. Si vous avez également besoin d'accompagnement pour optimiser votre site ou souhaitez préparer votre prochain événement commercial, Contactez nous. Nous sommes là pour garantir que votre plateforme fonctionne toujours au maximum de ses performances.