Recrutement en cours : êtes-vous un développeur PHP (Laravel) motivé et dévoué ?
img

Comment nous avons découvert des requêtes API lentes sur un site WordPress

et obtenu une accélération de plus de x40 après les corrections

Background

Nous développons une plateforme éducative qui vous permet de :

Créer des présentations de cours avec des diapositives comportant différents types de contenu

Les partager avec d’autres enseignants

Cloner et modifier le contenu pour l’adapter à différents groupes d’âge

Présenter ces cours aux élèves et recueillir leurs retours sous forme de réponses à des questions

Comment nous avons trouvé et corrigé les requêtes API lentes sur un site WordPress

Toutes les actions sur le contenu impliquent de grandes quantités de données et une communication active avec la base de données.

Quelque temps après le lancement test du projet, nous avons constaté que le chargement, la sauvegarde et le clonage des leçons prenaient trop de temps. Cela nous a incités à étudier le problème en détail et à rechercher des solutions basées sur les goulots d’étranglement identifiés.

Stack technique de la plateforme

Code

We used WordPress as the engine and the famous LearnDash plugin to implement the Learning Management System (LMS) functionality. This combination allowed the client to develop the necessary functionality and launch a demo to test the perception by end users in a short period of time. In the process of changing the requirements, we had to abandon most of the features that LearnDash provides and restructure the approach to creating content – replacing courses with lessons and lessons with slides.

Comment nous avons trouvé et corrigé les requêtes API lentes sur un site WordPress
Comment nous avons trouvé et corrigé les requêtes API lentes sur un site WordPress

Nous avons choisi Vue.js comme framework front-end, ce qui nous a permis de rendre l’interface utilisateur des fonctionnalités principales du projet réactive, à savoir les fonctionnalités de l’éditeur et de la présentation des leçons. La particularité de l’implémentation résidait dans la construction de la communication entre le client et le serveur sous forme de requêtes API. Les requêtes sont envoyées en grand nombre en raison de l’approche de gestion des publications dans le CMS sélectionné (WordPress), il n’était donc pas possible de réduire le nombre de requêtes. Cependant, la parallélisation et l’exécution asynchrone ont permis d’atteindre les résultats souhaités en termes de performance.

Serveur

L’architecture évolutive basée sur AWS nous a permis de nous assurer que la capacité du serveur était suffisante pour traiter un grand flux d’utilisateurs et garantir des performances décentes lors des pics de charge. Cependant, cette fois, la situation s’est avérée si imprévisible que la mise à l’échelle horizontale et verticale n’a donné aucun meilleur résultat.

Comment nous avons trouvé et corrigé les requêtes API lentes sur un site WordPress

Identifier le problème et le résoudre

Problems

La description initiale du problème expliquait que l’éditeur de leçons front-end développé ainsi que les pages d’édition des enregistrements dans le panneau d’administration prenaient trop de temps à charger. La première chose qui nous est venue à l’esprit était que le panneau d’administration était écrit en React et utilisait des requêtes API pour récupérer les catégories, les taxonomies et les étiquettes. Notre éditeur de leçons utilisait également des requêtes API pour lire et écrire le contenu des leçons.

Après avoir exploré l’onglet « réseau » dans les outils de développement du navigateur, nous avons constaté que toutes les requêtes asynchrones au serveur fonctionnaient comme prévu, à l’exception des requêtes API qui prenaient au moins 3 secondes chacune. Une vue détaillée de la requête a montré un TTFB élevé (temps jusqu’au premier octet), indiquant une lenteur côté backend ou serveur.

Il a été calculé empiriquement que quelles que soient les actions effectuées par le point de terminaison API, le résultat serait toujours le même – au moins 3 secondes de traitement, augmentant jusqu’à 5-6 secondes avec la croissance de la base de données.

Il convient de noter en particulier que la production s’est avérée être la phase la plus lente car elle contenait le plus grand volume de données – les publications et leurs métadonnées. Afin de vérifier que la vitesse de chargement diminuait à mesure que la quantité de données augmentait, la base de production a été déployée dans un environnement de test où nous avons obtenu la confirmation de cette théorie.

Comment nous avons trouvé et corrigé les requêtes API lentes sur un site WordPress
Image background

Nous nous posions constamment la même question :

Pourquoi la vitesse d’une requête API qui n’utilise pas la base de données lors du traitement de la logique interne est-elle affectée par la taille de la base de données ?

Solutions

Il a donc été décidé de désactiver les plugins utilisés un par un afin de déterminer leur impact sur la vitesse de chargement. Le premier résultat est apparu après la désactivation du plugin LearnDash, dont le contenu est la base de toute la plateforme. La vitesse de traitement des requêtes API était instantanément 40 fois plus rapide ! Cependant, étant donné l’impossibilité d’abandonner le plugin et de recourir à la recherche d’analogues, l’investigation a continué.

En parcourant le code du plugin LearnDash, en commençant par l’initialisation et l’inclusion des fichiers, nous avons commenté de grands blocs de code et vérifié leur impact sur la vitesse. Une attention particulière a été accordée à la fonctionnalité REST API, où le premier hook est apparu. En commentant entièrement l’utilisation de l’API REST par le plugin, le problème a été résolu. Cependant, ce n’était pas non plus une solution viable. En avançant dans la chaîne, nous avons trouvé la raison de ce comportement.

Le plugin LearnDash utilisait le hook WordPress rest_api_init non seulement pour enregistrer ses propres points de terminaison API et leurs champs, mais aussi pour inclure des contrôleurs supplémentaires avec de la logique, dont l’un contenait une sélection séquentielle non optimisée et volumineuse à partir de plusieurs tables de la base de données. Ainsi, quelle que soit la fonction d’itinéraire API, cette sélection était effectuée à chaque fois que nous envoyions une requête API au serveur (et, comme mentionné ci-dessus, de nombreuses requêtes sont envoyées). La raison de cette approche n’était pas claire, cependant, une demande de clarification a été envoyée aux développeurs du plugin LearnDash dans l’espoir d’un correctif dans les futures versions.

La présence d’un filtre dans le code du plugin (fourni par l’équipe de support LearnDash en réponse à notre ticket) a permis de résoudre la situation sans problème et d’autoriser l’exclusion des contrôleurs chargés de logique avant leur chargement. C’est ce que nous avons fait pour le contrôleur problématique.

Results:

Tout d’abord, le problème de lenteur des requêtes API a été résolu. Elles se chargent désormais encore plus vite qu’avant sur l’ensemble de données minimal. L’augmentation globale de la vitesse de chargement sur la quantité de données actuelle est de 40 fois !

Grâce à l’élimination de la récupération « lourde » à chaque requête API, nous avons réussi à réduire la charge globale sur le serveur de base de données, ce qui constitue un bonus appréciable et a justifié le temps consacré à la recherche du goulot d’étranglement.

Sur la base des informations fournies par le responsable de l’équipe WordPress de CitrusDev, l’équipe de support LearnDash a répondu à notre ticket et une mise à jour du plugin a été fournie. Ces améliorations ont été intégrées dans le code source de base du plugin. Par conséquent, les utilisateurs du monde entier du plugin LearnDash et de l’API REST WordPress ont obtenu une grande accélération sur leurs sites web. C’est pourquoi il est si essentiel de mettre à jour WordPress et tous les plugins en temps opportun.

Comment nous avons trouvé et corrigé les requêtes API lentes sur un site WordPress
Image background

Réponse de

l’équipe de développement LearnDash

Nous avons mis à jour ceci et prévoyons de publier les modifications dans la prochaine version majeure.

Merci pour vos retours – l’équipe de développement en a tenu compte et a également ajouté ses propres améliorations.

Image background

Si vous souhaitez que nos développeurs analysent et
étudient les problèmes de votre site WordPress
,
n'hésitez pas à nous contacter à tout moment.

Contactez-nous
Bluetooth Mesh dans les appareils mobiles : le guide complet pour 2025
10.10.2025

Bluetooth Mesh dans les appareils mobiles : le guide complet pour 2025

Le maillage Bluetooth dans les appareils mobiles : le guide complet pour 2025 Introduction au maillage Bluetooth La technologie Bluetooth a transformé la façon dont nos appareils communiquent. Des écouteurs sans fil aux montres connectées, le Bluetooth permet des connexions fluides. Mais lorsqu’il s’agit de réseaux à grande échelle — pensez à des centaines de […]
Lire la suite
Comment créer une application de lanceur Android TV personnalisée
18.06.2025

Comment créer une application de lanceur Android TV personnalisée

Avec la popularité croissante des appareils dotés du système Android TV OS, le développement pour cette plateforme est devenu de plus en plus pertinent. Android TV est une version du système d’exploitation Android conçue spécifiquement pour les téléviseurs intelligents et les box (set-top boxes), offrant un accès aux médias et aux jeux via Google Play. […]
Lire la suite
Jaibaida BMS : guide complet d’intégration avec les applications iOS
05.11.2024

Jaibaida BMS : guide complet d’intégration avec les applications iOS

Comprendre les systèmes de gestion de batterie Jiabaida (BMS) Jiabaida BMS (JBD BMS) sont des dispositifs intelligents conçus pour surveiller et gérer les batteries lithium-ion, en particulier les batteries au lithium fer phosphate (LiFePO4). Ces systèmes garantissent des performances, une sécurité et une longévité optimales de la batterie. Comment fonctionne le BMS JBD Un BMS […]
Lire la suite
Dokan Multivendor vs WCFM Marketplace : comparaison complète
05.09.2024

Dokan Multivendor vs WCFM Marketplace : comparaison complète

À mesure que l’industrie du eCommerce se développe, la création de marketplaces multivendeurs est devenue un moyen populaire pour les entreprises d’élargir leur offre. WooCommerce, étant l’une des plateformes les plus personnalisables, propose plusieurs plugins permettant aux utilisateurs de mettre en place des marketplaces multivendeurs. Deux des principaux concurrents sont Dokan Multivendor et WCFM Marketplace. […]
Lire la suite
Comment choisir un partenaire fiable pour le développement d’un projet IoT
12.08.2024

Comment choisir un partenaire fiable pour le développement d’un projet IoT

L’Internet des objets (IoT) révolutionne les industries en connectant les appareils et en permettant une prise de décision plus intelligente. Que vous souhaitiez innover dans vos processus métier ou créer de nouvelles sources de revenus, un projet IoT peut transformer votre entreprise. Cependant, le succès de votre initiative IoT dépend du choix du bon partenaire […]
Lire la suite
Types de dispositifs IoT : transformer le monde connecté
08.07.2024

Types de dispositifs IoT : transformer le monde connecté

L’Internet des objets (IoT) transforme notre monde en reliant les objets du quotidien à Internet, leur permettant d’envoyer, de recevoir et de traiter des données. Ce réseau interconnecté de dispositifs couvre divers secteurs, améliorant l’efficacité, la commodité et la productivité. Voici une exploration des différents types de dispositifs IoT et de leurs rôles importants dans […]
Lire la suite
Image background

Envoyez un message à notre équipe pour voir comment nous pouvons vous aider

Nous n’avons besoin que de quelques heures !

Pas plus de 2 jours ouvrables après réception de votre demande.