Ajax è una tecnologia web basata su JavaScript che aiuta a costruire siti web dinamici e interattivi. WordPress usa Ajax per alimentare molte delle sue caratteristiche principali dell’area amministrativa, come il salvataggio automatico dei post, la gestione delle sessioni utente e le notifiche.

Per impostazione predefinita, WordPress dirige tutte le chiamate Ajax attraverso il file admin-ajax.php che si trova nella directory /wp-admin del sito.

Numerose richieste Ajax simultanee possono portare a un uso elevato di admin-ajax.php, con conseguente notevole rallentamento del server e del sito web. È uno dei problemi più comuni affrontati da molti siti WordPress non ottimizzati. In genere, si manifesta come un sito web lento o un errore HTTP 5xx (per lo più errori 504 o 502).

In questo articolo, imparerete a conoscere il file admin-ajax.php di WordPress, come funziona, i suoi vantaggi e svantaggi, e come è possibile diagnosticare e risolvere il problema dell’elevato utilizzo di admin-ajax.php.

Pronti a partire? Andiamo!

Cos’È il File admin-ajx.php?

Il file admin-ajax.php contiene tutto il codice che serve per l’instradamento delle richieste Ajax su WordPress. Il suo scopo principale è quello di stabilire una connessione tra il client e il server usando Ajax. WordPress lo usa per aggiornare i contenuti della pagina senza ricaricarla, rendendola così dinamica e interattiva per gli utenti.

Una panoramica di base sul funzionamento di Admin Ajax su WordPress
Una panoramica di base sul funzionamento di Admin Ajax su WordPress

Poiché il core di WordPress usa già Ajax per alimentare le sue varie funzioni di backend, è possibile usare le stesse funzioni per impiegare Ajax su WordPress. Tutto quello che dovete fare è registrare un’azione, puntarla sul file admin-ajax.php del vostro sito e definire come volete che restituisca il valore. Potete impostarlo in HTML, JSON, o anche XML.

Il file admin-ajax.php in WordPress
Il file admin-ajax.php in WordPress

Come indica WordPressTrac, il file admin-ajax.php è apparso per la prima volta in WordPress 2.1. Viene anche chiamato Ajax Admin nella comunità di sviluppo di WordPress.

Controllo dell'utilizzo di Ajax nel cruscotto di MyKinsta
Controllo dell’utilizzo di Ajax nel cruscotto di MyKinsta

Il grafico qui sopra mostra solo la quantità di richieste admin-ajax.php, non da dove potrebbero provenire. È un ottimo modo per vedere quando si verificano i picchi. Potete combinarlo con altre tecniche menzionate in questo articolo per restringere la causa primaria.

Controllo del numero di richieste admin-ajax.php in Chrome DevTools
Controllo del numero di richieste admin-ajax.php in Chrome DevTools

Potete anche usare Chrome DevTools per vedere quante richieste vengono inviate a admin-ajax.php. Controllate anche la scheda Timings nella sezione Network per scoprire quanto tempo ci vuole per elaborare queste richieste.

Per quanto riguarda la ricerca della ragione esatta dietro l’elevato utilizzo di admin-ajax.php, ci sono due cause principali: una dovuta al frontend e l’altra dovuta al backend. Le analizziamo entrambe qui di seguito.

Ajax è alla base di molte funzionalità chiave di WordPress... ma quando arrivano troppe richieste, può rallentare significativamente il tuo sito. 😱 Scopri come risolvere il problema e ottimizzare l'utilizzo di Ajax 👇Click to Tweet

Come Eseguire il Debug di Un Elevato Utilizzo di admin-ajax.php su WordPress

I plugin di terze parti sono uno dei motivi più comuni dietro l’elevato utilizzo di admin-ajax.php. In genere, questo problema è visto sul frontend del sito e si presenta spesso nei rapporti di test di velocità.

Ma i plugin non sono l’unico colpevole qui: anche i temi, il core di WordPress, il web server e un attacco DDoS possono essere una ragione dietro l’elevato utilizzo di Admin Ajax.

Esploriamoli in modo più dettagliato.

Come Determinare l’Origine di un Elevato Utilizzo di admin-ajax.php per Plugin e Temi

Plugin alimentati con Ajax nel repository di WordPress.org
Plugin alimentati con Ajax nel repository di WordPress.org

Ajax è spesso usato dagli sviluppatori di WordPress per creare plugin e temi dinamici e interattivi. Alcuni esempi popolari includono l’aggiunta di funzionalità come la ricerca in tempo reale, i filtri dei prodotti, lo scroll infinito, il carrello dinamico e il box per la chat.

Solo perché un plugin usa Ajax non significa che rallenterà il vostro sito.

Visualizzazione della richiesta admin-ajax.php nel rapporto di WebPageTest
Visualizzazione della richiesta admin-ajax.php nel rapporto di WebPageTest

Di solito, l’Admin Ajax si carica verso la fine del processo di caricamento di pagina. Inoltre, potete impostare il caricamento delle richieste Ajax in modo asincrono, in modo che possa avere poco o nessun effetto sulle prestazioni di pagina percepite dall’utente.

Come potete vedere nel rapporto WebPageTest sopra riportato, admin-ajax.php si carica verso la fine della coda di richieste, ma impiega ancora 780 ms. È un sacco di tempo per una sola richiesta.

Rapporto GTmetrix che indica un importante picco di utilizzo di admin-ajax.php
Rapporto GTmetrix che indica un importante picco di utilizzo di admin-ajax.php

Quando gli sviluppatori non implementano correttamente Ajax su WordPress, questo può portare a drastici problemi di performance. Il rapporto GTmetrix di cui sopra è un perfetto esempio di tale comportamento.

È inoltre possibile usare GTmetrix per scavare nei singoli post e nei dati di risposta. Potete usare questa funzione per individuare la causa del problema.

Per farlo, andate alla scheda Waterfall del report GTmetrix, quindi trovate la voce POST admin-ajax.php e fateci clic sopra. Vedrete tre schede per questa richiesta: Headers, Post e Response.

I dati di header della richiesta POST per admin-ajax.php
I dati di header della richiesta POST per admin-ajax.php

Controllando le schede Post e Response della richiesta, troverete alcuni suggerimenti per scoprire le ragioni alla base del problema di performance. Per questo sito, potete vedere gli indizi nella scheda Response.

Dati della scheda Response per la richiesta POST admin-ajax.php
Dati della scheda Response per la richiesta POST admin-ajax.php

Potete vedere che parte della risposta ha qualcosa a che fare con un tag di input con id impostato su “fusion-form-nonce-656”.

Una rapida ricerca di questa stringa vi condurrà al sito web di ThemeFusion, i creatori del tema Avada. Da qui, potete concludere che la richiesta proviene dal tema, o da uno qualsiasi dei plugin che lo compongono.

In tal caso, è necessario prima assicurarsi che il tema Avada e tutti i relativi plugin siano completamente aggiornati. Se questo non risolve il problema, allora potete provare a disabilitare il tema e vedere se questo risolve tutto.

A differenza della disabilitazione di un plugin, la disabilitazione di un tema non è fattibile nella maggior parte degli scenari. Quindi, provate a ottimizzare il tema per rimuovere eventuali colli di bottiglia. Potete anche contattare il team di supporto del tema per vedere se può suggerire una soluzione migliore.

Il test GTmetrix di un altro sito web lento ha portato a trovare problemi simili dovuti al costruttore di pagine di Visual Composer e il plugin Notification Bar.

I dati Response di un'altra richiesta POST admin-ajax.php
I dati Response di un’altra richiesta POST admin-ajax.php
I dati Post di un'altra richiesta POST admin-ajax.php
I dati Post di un’altra richiesta POST admin-ajax.php

Per fortuna, se non riuscite a risolvere un problema con il plugin, la maggior parte di voi ha a disposizione molti plugin alternativi da provare. Per esempio, quando si tratta di costruttori di pagine, potreste provare anche Beaver Builder o Elementor.

Come Determinare l’Origine di un Elevato Utilizzo di admin-ajax.php

A volte, i dati Post e Response presentati nei rapporti di test della velocità possono non essere così chiari e semplici. In questo caso, trovare l’origine dell’elevato utilizzo di admin-ajax.php non è così facile. In questi casi, si può sempre fare alla vecchia maniera.

Disattivate tutti i plugin del sito, cancellate la cache del sito (se presente) e poi eseguite nuovamente un test di velocità. Se la richiesta admin-ajax.php è ancora presente, allora il colpevole più probabile è il tema. Ma se non trovate nulla da nessuna parte, allora dovete attivare ogni plugin uno per uno ed ripetere i test di velocità ogni volta. Con il processo di eliminazione, bloccherete l’origine del problema.

Suggerimento: l’utilizzo di un ambiente di staging (ad esempio l’ambiente di staging di Kinsta) è un ottimo modo per eseguire i test sul vostro sito senza influenzare il vostro sito live. Una volta determinata la causa e risolto il problema nell’ambiente di staging, potete spostare le modifiche al sito live.

Diagnosticare i Problemi del Server Backend con admin-ajax.php

La seconda ragione più comune per l’elevato utilizzo di admin-ajax.php è l’API WordPress Heartbeat che genera frequenti chiamate Ajax, portando a un elevato utilizzo della CPU sul server. Tipicamente, questo è causato da molti utenti che hanno effettuato l’accesso alla dashboard del backend di WordPress. Questo quindi non si vedrà nei test di velocità.

Per impostazione predefinita, l’API Heartbeat esegue il polling del file admin-ajax.php ogni 15 secondi per salvare automaticamente i post o le pagine. Se usate un server di hosting condiviso, allora non disponete di molte risorse server dedicate al vostro sito. Se state modificando un post o una pagina e lasciate la scheda aperta per un tempo significativo, allora potete accumulare molte richieste Admin Ajax.

Sei stanco di avere problemi con il tuo sito WordPress? Scegli il migliore e più veloce supporto all’hosting con Kinsta! Dai un’occhiata ai nostri piani

Ad esempio, un singolo utente da solo può generare 240 richieste in un’ora mentre scrive o modifica i post!

Frequenti richieste di salvataggio automatico di admin-ajax.php
Frequenti richieste di salvataggio automatico di admin-ajax.php

Sono senza dubbio molte richieste sul backend per un solo utente. Ora immaginate un sito in cui ci sono più editor collegati contemporaneamente. Un sito di questo tipo può accumulare rapidamente un gran numero di richieste Ajax, generando un elevato utilizzo della CPU.

Kinsta si è imbattuto proprio in questo problema mentre aiutava DARTDrones a scalare il loro sito WooCommerce per un’apparizione su Shark Tank.

Il loro sito ha ricevuto oltre 4.100 richieste admin-ajax.php in un giorno con soli 2.000 visitatori unici. Si tratta di un debole rapporto richieste/visite.

Uso elevato di admin-ajax.php su dartdrones.com
Uso elevato di admin-ajax.php su dartdrones.com

Il team di Kinsta ha notato l’URL referrer /wp-admin e ne ha identificato correttamente la causa. Queste richieste erano dovute al fatto che gli amministratori e i redattori di DARTDrones stavano aggiornando frequentemente il sito in previsione dello show.

WordPress ha in parte già da tempo risolto questo problema delle API Heartbeat. Ad esempio, potete ridurre la frequenza delle richieste generate dall’API Heartbeat sugli host con risorse limitate. La frequenza si sospende anche dopo un’ora di inattività della tastiera /mouse/touch.

Uso del Plugin Heartbeat Control per Ridurre le Richieste Ajax

Potete risolvere facilmente questo problema usando il plugin Heartbeat Control di WP Rocket. Esso permette di disabilitare o modificare la frequenza dell’API Heartbeat in pochi clic.

Il plugin Heartbeat Control
Il plugin Heartbeat Control

Con il plugin Heartbeat Control installato e attivato, potete gestire la frequenza delle API Heartbeat sul cruscotto di WordPress, sul frontend del sito e sull’editor dei post.

Bacheca con le "Impostazioni generali" del plugin Heartbeat Control
Bacheca con le “Impostazioni generali” del plugin Heartbeat Control

Se però il vostro server ha risorse CPU limitate, vi consigliamo di disattivare Heartbeat sia sulla dashboard WordPress che sul frontend. Potete anche modificare la frequenza di Heartbeat (Modify Heartbeat) per l’opzione ‘Post editor’ e aumentarla a 30 secondi (o anche a 60 secondi). Più alta è la frequenza, maggiore è il risparmio sulle risorse usate dal server.

Le impostazioni esatte che dovrete usare variano da sito a sito. Se non siete sicuri su cosa usare, potete consultare una persona esperta in sviluppo web.

Traffico Elevato a Causa di un Attacco DDoS o di Bot di Spam

Anche quando il vostro sito viene travolto da un attacco DDoS o da bot di spam potreste sperimentare un elevato utilizzo di admin-ajax.php. Tuttavia, un tale attacco non è necessariamente mirato ad aumentare le richieste di Admin Ajax. È solo un danno collaterale.

Se il vostro sito è vittima di un attacco DDoS, la vostra priorità dovrebbe essere quella di metterlo al riparo dietro un robusto CDN/WAF come Cloudflare o Sucuri. Ogni piano di hosting con Kinsta include anche Kinsta CDN, che può aiutarvi a scaricare gran parte delle risorse del vostro sito web.

Per saperne di più su come proteggere i vostri siti web da attacchi maligni come questi, potete consultare la nostra guida approfondita su come fermare un attacco DDoS.

Se stai rilevando dei rallentamenti nel server e nel tuo sito web, questi potrebbero essere dovuti a un eccesso di richieste Ajax. ⏳ Preparati a fare una diagnosi e a risolvere il problema seguendo questa guida!Click to Tweet

Riepilogo

WordPress usa Ajax nella sua API Heartbeat per implementare molte delle sue caratteristiche principali. Tuttavia, questa può portare a un aumento dei tempi di caricamento, se non viene usata correttamente. Ciò è tipicamente causato da un’alta frequenza di richieste al file admin-ajax.php.

In questo articolo, avete imparato le varie cause dell’elevato utilizzo di admin-ajax.php, come diagnosticare ciò che è responsabile di questo sintomo, e come potete risolvere il problema. Nella maggior parte dei casi, seguendo questa guida, il vostro sito dovrebbe tornare a funzionare senza problemi in poco tempo.

Tuttavia, in alcuni casi l’unica soluzione possibile è passare a un server con risorse più elevate, soprattutto per i casi di utilizzo impegnativo come l’ecommerce e i siti di affiliazione. Se gestite un sito di questo tipo, considerate la possibilità di passare a un host WordPress gestito che abbia esperienza nella gestione di questo tipo di problemi di performance.

Se avete ancora problemi con l’elevato utilizzo di admin-ajax.php sul vostro sito WordPress, fatecelo sapere nella sezione commenti.


Risparmia tempo e costi e massimizza le prestazioni del sito con:

  • Aiuto immediato dagli esperti dell’hosting WordPress, 24/7.
  • Integrazione di Cloudflare Enterprise.
  • Copertura globale del pubblico con 29 data center in tutto il mondo.
  • Ottimizzazione del sito con il nostro Monitoraggio delle Prestazioni delle Applicazioni integrato.

Tutto questo e molto altro, in un piano senza contratti a lungo termine, con migrazioni assistite e una garanzia di 30 giorni di rimborso. Scopri i nostri piani o contattaci per trovare il piano che fa per te.