Introduction
Le fichier admin-ajax.php est un service intégré dans WordPress. Il est basé sur le modèle AJAX (Asynchronous JavaScript + XML).
Le processus admin-ajax.php permet à WordPress de faire des mises à jour de façon interactive, et ce, sans avoir à rafraîchir la page entièrement. Par exemple, WordPress peut transmettre des requêtes MySQL sur la base de données et les informations sont retournées sans même avoir à rafraîchir la page.
Par défaut, WordPress dirige tous les appels AJAX via le fichier admin-ajax.php. Le processus admin-ajax.php n’étant pas mis en cache dans le noyau de WordPress, il est normal que ce dernier utilise les ressources (souvent, par défaut, de façon inefficace) selon la nature des actions menées en AJAX.
La présente documentation vise à démontrer comment analyser l’usage de admin-ajax.php dans WordPress, parce que des surcharges provoquées par ce fichier se produisent souvent. À ce moment-là, un diagnostic s’impose afin de pouvoir déterminer quel plugin (module d’extension) ou réglage provoque de la surcharge inutilement; par la suite, il devient possible d’ajuster le tout en conséquence.
Références
L’article Utilisation de WordPress sur N0C explique comment se connecter à WordPress.
Prérequis
Saisissez dans votre navigateur web l’adresse suivante : https://mg.n0c.com/fr/.
Surcharges du processus admin-ajax.php
D’entrée de jeu, il convient de spécifier qu’admin-ajax.php n’est pas mauvais en soi, bien au contraire. Cependant, en raison de sa nature directe et dénuée de mise en cache, il peut se produire des cas de surcharge liés au gaspillage des ressources découlant de requêtes générées directement sur le serveur web qui les traite pour les protocoles HTTP et HTTPS.
Différentes raisons peuvent expliquer ce genre de surcharges sur votre site. Par exemple, un plugin particulier consommant beaucoup de AJAX peut être combiné à un achalandage élevé. Il peut arriver aussi que le tableau de bord WordPress soit resté ouvert trop longtemps (plusieurs heures) : à ce moment-là, admin-ajax.php pourrait se mettre à gaspiller des ressources.
Dans les sections suivantes, nous allons vous expliquer comment faire les analyses pour trouver les causes des surcharges.
Comment analyser la charge de admin-ajax.php
Activation de la journalisation AJAX
Au moment d’une analyse, la première chose à faire est d’activer la journalisation de admin-ajax.php. Pour ce faire, vous devez installer un plugin spécial appelé « Amuga Ajax Log ». Ce plugin permet de déterminer ce qui se passe avec précision sur admin-ajax.php et de prendre un choix éclairé sur l’action à poser afin de rectifier le tir. On peut obtenir le plugin en question sur le site web de WordPress : https://wordpress.org/plugins/amuga-ajax-log/.
Il faut garder à l’esprit que ce plugin sert à analyser un problème de surcharge relié à admin-ajax.php. Comme son utilisation risque de provoquer de la charge en UC / MySQL, il est impératif de le désactiver une fois les analyses effectuées.
Pour installer Amuga Ajax Log avec N0C:
- Dans N0C, choisissez CMS/Applications et N0C WP.
- Choisissez le site et cliquez sur l’icône Détails:
3. Cliquez sur le bouton Ajouter une extension :
4. Recherchez l’extension Amuga Ajax Log :
5. Cliquez sur le bouton Installer :
6. Cliquez sur l’icône Activer pour activer le plugin Amuga Ajax Log :
7. Quittez N0C et ouvrez-le de nouveau.
8. Accédez à l’administration de WordPress en cliquant sur le bouton Connexion du site :
9. Confirmez que l’interface graphique du plugin apparaît en haut à gauche de votre Tableau de bord WordPress :
Analyser de la charge de admin-ajax.php
1. Après avoir patienté quelques heures pour que le plugin récolte les données, cliquez sur Amuga Ajax Log, de manière à afficher les outils Leaderboard et Recent Hits List :
2. La section Admin-Ajax Leaderboard montre clairement quelle fonction de WordPress a consommé le plus de AJAX, de sorte que vous puissiez déterminer d’où provient la charge. Le processus qui possède la valeur la plus élevée dans la colonne Total est votre suspect numéro 1; dans l’exemple présent, on observe beaucoup de « heartbeat » :
3. Un peu plus bas sur la même page, la section nommée 50 Recent Admin Ajax Hits fournitdavantage de détails :
4. Il suffit de voir quel plugin a saturé des requêtes AJAX et voir comment assouplir son usage. Parfois, un plugin alternatif pourrait être considéré. Parfois, il faudra ajuster les réglages du plugin en question afin de réduire son empreinte. En dernier recours, la désactivation du plugin affecté pourra confirmer que la surcharge provient bien de ce dernier.
Ajustement du « heartbeat » de WordPress
Il est normal que vous voyiez beaucoup de « heartbeat » dans les processus admin-ajax les plus gourmands. De fait, le heartbeat est le processus de WordPress qui s’assure de synchroniser les publications (posts) et vos pages interactives.
Pour une installation de WordPress qui a pour but d’être plutôt statique, il est possible d’aller chercher beaucoup de performance en ajustant le heartbeat de manière à réduire son empreinte sur les ressources de votre hébergement web. Cela pourra être accompli à l’aide du plugin Heartbeat API control, qui peut se trouver ici : https://wordpress.org/plugins/heartbeat-control/.
Pour installer le plugin :
1. Ajoutez à votre site le plugin Heartbeat control :
2. Cliquez sur le bouton Activer :
3. Accédez à l’administration de WordPress en cliquant sur le bouton Connexion du site :
4. Dans WordPress, choisissez Réglages et Heartbeat Control :
5. Typiquement, il s’agit de désactiver le Heartbeat pour le frontend et le backend, sauf pour l’éditeur de posts :
- WordPress Dashboard > Disable Heartbeat
- Frontend > Disable Heartbeat (sites statiques)
- Post editor > Allow Heartbeat
6. Sauvegardez les changements en cliquant sur le bouton SAVE CHANGES.
Conclusion
Nous espérons que cet article vous aura aidé à en apprendre plus au sujet de admin-ajax.php dans WordPress et que vous saurez mieux le prendre en main.