7 Luglio 2023

WordPress efficienza e velocità: i rischi delle chiamate AJAX ad admin-ajax.php

Identificazione e Diagnosi di Problemi di Carico e Performance Legati ad admin-ajax.php su WordPress

Saper utilizzare e ottimizzare WordPress può sembrare un compito da poco, ma ci sono aspetti che se non gestiti correttamente possono portare a problemi di efficienza e velocità. Un esempio è l’uso improprio delle chiamate ad admin-ajax.php, uno strumento potente ma che, se utilizzato senza attenzione, può diventare una fonte di rischi per il tuo sito WordPress. In questo articolo analizzeremo questi rischi, capiremo come ottimizzare le performance del tuo sito e come evitare che il tuo database diventi lento.

Cos’è AJAX

AJAX è l’acronimo di Asynchronous JavaScript and XML. È una tecnologia che permette di creare applicazioni web interattive e dinamiche, in grado di aggiornare e modificare il contenuto di una pagina web senza necessità di ricaricarla. Questo si traduce in un’esperienza utente più fluida e reattiva.

AJAX non è un linguaggio di programmazione, ma una combinazione di tecnologie standard del web, come JavaScript, XML, HTML, e CSS. Mentre JavaScript viene utilizzato per interagire con l’HTML e creare funzionalità interattive, XML viene usato per trasportare i dati.

Cos’è l’XMLHttpRequest

L’XMLHttpRequest è una componente essenziale nel contesto delle tecnologie web, in particolare quando si parla di AJAX. Si tratta di un oggetto incorporato nel linguaggio JavaScript, che riveste un ruolo di fondamentale importanza per l’implementazione delle funzionalità AJAX nelle applicazioni web.

La sua funzione principale consiste nel consentire la creazione e l’invio di richieste HTTP – come GET, POST, HEAD e altri metodi HTTP – direttamente dal lato client, cioè dal browser dell’utente, al server. Questo avviene senza bisogno di ricaricare o interrompere l’interazione dell’utente con la pagina web, da cui deriva l’attributo “asincrono” nell’acronimo AJAX.

Ma come funziona esattamente l’XMLHttpRequest? Questo oggetto inizia creando una richiesta al server utilizzando uno specifico metodo HTTP. Una volta che la richiesta è pronta, l’XMLHttpRequest la invia al server che poi risponde con i dati richiesti. Durante questo processo, l’oggetto XMLHttpRequest mantiene un canale di comunicazione aperto tra il client e il server, consentendo lo scambio di dati in modo asincrono.

L’asincronicità dell’XMLHttpRequest significa che l’interazione dell’utente con l’applicazione web può continuare senza interruzioni anche mentre la richiesta è in corso. Questo consente di creare applicazioni web più reattive e user-friendly, dove le operazioni come il caricamento dei dati, l’aggiornamento del contenuto della pagina o l’invio di moduli avvengono in modo quasi istantaneo, senza la necessità di ricaricare la pagina.

Inoltre, l’XMLHttpRequest offre anche la possibilità di gestire le risposte dal server in diversi formati, non solo XML come suggerisce il nome. Può infatti trattare diversi tipi di dati, inclusi JSON, HTML e testo semplice, offrendo quindi una flessibilità considerevole per lo sviluppo di applicazioni web dinamiche.

Scopi e Vantaggi di AJAX

AJAX ha lo scopo di rendere le applicazioni web più rapide, interattive e user-friendly. Ciò viene realizzato attraverso l’aggiornamento dinamico del contenuto della pagina, senza necessità di ricaricarla completamente.

I principali vantaggi di AJAX includono:

  1. Migliore Interattività: AJAX consente di creare applicazioni web che rispondono in modo rapido e fluido alle azioni dell’utente, rendendo l’esperienza d’uso più simile a quella di un’applicazione desktop.
  2. Minor Traffico di Rete: Dato che AJAX aggiorna solo le parti necessarie della pagina, si riduce il volume di dati scambiati tra il client e il server, migliorando le prestazioni e riducendo il carico sul server.
  3. Migliore Esperienza Utente: Grazie ad AJAX, le applicazioni web possono mostrare informazioni aggiornate in tempo reale, mantenere lo stato dell’utente e offrire funzionalità avanzate come l’autocompletamento dei form, senza la necessità di ricaricare la pagina.

Tuttavia, è importante ricordare che AJAX, come ogni tecnologia, ha i suoi svantaggi e deve essere utilizzato con attenzione. Ad esempio, un uso improprio di AJAX può rendere la navigazione più complicata e diminuire la compatibilità con motori di ricerca e con le funzionalità di accessibilità del browser.

Cos’è admin-ajax.php

Prima di affrontare la discussione sui possibili rischi associati all’uso di admin-ajax.php, è fondamentale capire in dettaglio di cosa si tratta. Il file admin-ajax.php è un componente chiave del sistema di WordPress, sviluppato appositamente per gestire le chiamate Ajax dal lato client.

Questo file PHP è ubicato nel cuore di WordPress, nella directory wp-admin. Nonostante il nome possa far pensare che sia utilizzato solo per le operazioni di amministrazione, admin-ajax.php è in realtà utilizzato sia nel lato pubblico (frontend) del tuo sito, che nel lato amministrativo (backend).

Il vero valore di admin-ajax.php risiede nella sua capacità di eseguire operazioni in background, senza interrompere o richiedere il caricamento della pagina che l’utente sta visualizzando. Questo lo rende un elemento essenziale per l’interattività del tuo sito WordPress. Ad esempio, funzionalità come il caricamento asincrono di contenuti, l’aggiornamento di un post o l’invio di un modulo commenti, sono tutte possibili grazie a admin-ajax.php.

Gli sviluppatori di plugin e temi per WordPress sfruttano admin-ajax.php per gestire le richieste Ajax delle loro funzionalità personalizzate. Questo significa che quando un plugin o un tema ha bisogno di effettuare una richiesta al server, senza ricaricare la pagina, è probabile che sfrutti admin-ajax.php. Il file agisce come un intermediario tra il browser dell’utente e il server, gestendo la comunicazione e assicurando che i dati vengano inviati e ricevuti correttamente.

In sintesi, admin-ajax.php è una parte integrante dell’architettura di WordPress, essenziale per l’implementazione di molte funzionalità dinamiche che rendono i siti WordPress interattivi e reattivi. Tuttavia, è anche un elemento che richiede attenzione in termini di performance e sicurezza, dato che un uso improprio o eccessivo di admin-ajax.php può portare a problemi di sovraccarico del server e potenziali vulnerabilità di sicurezza.

I Rischi delle Chiamate ad admin-ajax.php

L’uso di admin-ajax.php può comportare alcuni problemi. Quando le chiamate a questo file aumentano, la CPU del tuo server può sovraccaricarsi, portando a una diminuzione delle prestazioni del tuo sito. Inoltre, l’uso sconsiderato di admin-ajax.php può causare una saturazione del pool PHP FPM, che è responsabile dell’elaborazione dei file PHP del tuo sito. Di conseguenza, la tua pagina web potrebbe impiegare più tempo del normale per caricare.

Un altro rischio connesso all’uso di admin-ajax.php è la possibilità di creare un bypass delle full page cache come Varnish. Questo accade perché le chiamate AJAX di norma non vengono memorizzate nella cache, il che significa che ogni volta che un utente visita la tua pagina, il server deve processare una nuova richiesta.

Database Lento e Query Lente

La gestione non ottimizzata delle chiamate ad admin-ajax.php può portare anche a un rallentamento del database. Questo avviene quando le richieste generate da admin-ajax.php contengono query lente, ovvero query che richiedono molto tempo per essere eseguite dal database. Se non gestite correttamente, queste query possono sovraccaricare il tuo database, rallentando la velocità di caricamento del tuo sito.

Oltretutto anche qualora le query SQL fossero sufficientemente veloci, o anche persino molto veloci, un elevatissimo numero di query contemporanee sarebbero comunque in grado di saturare le risorse del database MySQL

Una situazione come quella sopra, insomma, con oltre 9000 utenti connessi ed oltre 10 mila visualizzazioni di pagina al minuto genererebbe moltissime chiamate AJAX qualora presenti, e relative query SQL e spawn di processi PHP rendendo difficile reggere il carico senza un notevole rallentamento o addirittura un crash.

Funzionamento AJAX e WordPress

AJAX, acronimo di Asynchronous JavaScript and XML, è una tecnologia web che ha trasformato il modo in cui le pagine web interagiscono con i server. Il suo principio di base consiste nell’effettuare richieste al server e nel ricevere dati in risposta, il tutto in background e senza necessità di ricaricare la pagina web. Ciò permette di aggiornare porzioni di una pagina con nuovi dati, rendendola più dinamica e interattiva.

In un sistema come WordPress, AJAX trova un ampio utilizzo in diverse funzionalità. Può essere utilizzato per caricare nuovi commenti in un post, aggiornare informazioni in un modulo o caricare post più recenti, il tutto senza interrompere l’esperienza dell’utente ricaricando la pagina. Questa fluidità dell’interfaccia utente migliora notevolmente l’esperienza dell’utente finale.

Un punto cruciale dell’implementazione di AJAX in WordPress è il file admin-ajax.php, che come abbiamo già accennato, gestisce le chiamate AJAX dal lato client. Quando un’azione AJAX viene innescata, il file admin-ajax.php entra in gioco, processa la richiesta e restituisce la risposta appropriata. Il tutto avviene in modo asincrono, permettendo all’utente di continuare a interagire con il sito senza interruzioni.

Nonostante i vantaggi che AJAX porta in termini di interattività e reattività, è fondamentale tenere a mente che ogni chiamata AJAX genera una richiesta HTTP al server. Questo significa che per ogni operazione AJAX, il server deve dedicare risorse per processare la richiesta e generare una risposta. Questo comporta un utilizzo della CPU e, a seconda della natura della richiesta, può anche comportare un’interrogazione al database.

Se non si controllano e limitano adeguatamente queste richieste AJAX, si può rischiare di sovraccaricare la CPU e di rallentare il sito. Ad esempio, se un plugin di WordPress mal progettato o difettoso genera richieste AJAX incontrollate, può causare un eccessivo utilizzo della CPU, saturazione del pool PHP FPM e rallentamento del database, portando a prestazioni del sito scadenti o, nel peggiore dei casi, al crash del server.

Inoltre, poiché le chiamate a admin-ajax.php bypassano le cache di pagina completa come Varnish, possono portare a un aumento del carico sul server. Pertanto, è essenziale monitorare e ottimizzare l’uso di AJAX in WordPress, per assicurarsi che il sito sia veloce, efficiente e in grado di gestire un alto traffico di utenti.

Ottimizzazione delle Prestazioni di WordPress e admin-ajax.php

Determinare l’origine di un utilizzo eccessivo di admin-ajax.php può essere un compito difficile, ma non impossibile. Uno strumento utile in questo caso può essere il Query Monitor, un plugin di WordPress che permette di visualizzare tutte le richieste AJAX che vengono eseguite.

Installando e attivando Query Monitor, è possibile vedere quali azioni AJAX vengono eseguite, quali dati vengono trasmessi e da quale parte del tuo sito WordPress viene effettuata la richiesta. Se noti un numero insolitamente elevato di richieste AJAX, dovresti cercare il plugin o il tema responsabile.

Un altro metodo consiste nell’esaminare i log del server web: molte volte le richieste a admin-ajax.php vengono registrate, permettendo di identificare facilmente i colpevoli.

Infine, puoi usare strumenti come l’ispezione del network nel tuo browser per monitorare le chiamate HTTP e identificare quelle che vanno a admin-ajax.php. Questi metodi combinati dovrebbero aiutarti a isolare il problema e trovare la fonte di un utilizzo eccessivo di admin-ajax.php.

Cachare admin-ajax.php

Mentre le chiamate AJAX in WordPress di default non vengono cachate, ci sono casi in cui potrebbe essere vantaggioso considerare la cache per alcune di queste chiamate. Il ragionamento dietro questo concetto si basa sulla natura delle richieste che stai effettuando e sulla necessità di avere una risposta in tempo reale o meno.

Le richieste di tipo POST, che inviano dati al server per essere processati, non dovrebbero essere cachate. Queste richieste spesso implicano modifiche ai dati sul server e richiedono una risposta in tempo reale per garantire la corretta funzionalità del sito.

D’altra parte, le richieste di tipo GET, che recuperano dati dal server, possono essere candidate ideali per la cache. Queste richieste sono spesso utilizzate per recuperare dati che non cambiano frequentemente o che non richiedono un aggiornamento in tempo reale. Ad esempio, un contatore di visualizzazioni di pagina, la lista dei commenti su un post o un feed di notizie potrebbero non necessitare di aggiornamenti immediati.

Cachare queste richieste di tipo GET può ridurre significativamente il carico sul tuo server, poiché le richieste non devono essere processate ogni volta. Invece, la risposta può essere memorizzata nella cache per un certo periodo di tempo, riducendo il numero di richieste al server e migliorando le performance generali del sito.

Tuttavia, è importante fare attenzione a non cachare troppo a lungo queste richieste. Se i dati cambiano e la cache non è aggiornata, gli utenti potrebbero vedere informazioni obsolete. Un equilibrio ideale può essere raggiunto impostando un periodo di cache ragionevole, ad esempio di pochi minuti, per garantire che i dati siano abbastanza aggiornati ma che le richieste al server siano ridotte al minimo.

Ricorda, la decisione di cachare le chiamate AJAX dovrebbe essere presa in base alle esigenze specifiche del tuo sito e alle caratteristiche delle tue richieste AJAX. In alcuni casi, potrebbe non essere necessario o addirittura controproducente. Ma in molti scenari, applicare una cache intelligente alle chiamate AJAX può portare a significativi miglioramenti delle performance.

Conclusioni

In conclusione, l’uso di admin-ajax.php in WordPress è un’arma a doppio taglio. Da un lato, offre molte possibilità per migliorare l’interattività del tuo sito. Dall’altro, se non utilizzato correttamente, può portare a problemi di efficienza e velocità.

Per evitarlo, è fondamentale monitorare e ottimizzare le prestazioni del tuo sito, limitare il numero di chiamate Ajax e ottimizzare il tuo database. Ricorda che un sito veloce e efficiente non solo offre un’esperienza migliore ai tuoi utenti, ma può anche migliorare il tuo posizionamento nei motori di ricerca.

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

Managed Server S.r.l. è un player italiano di riferimento nel fornire soluzioni avanzate di sistemistica GNU/Linux orientate all’alta performance. Con un modello di sottoscrizione dai costi contenuti e prevedibili, ci assicuriamo che i nostri clienti abbiano accesso a tecnologie avanzate nel campo dell’hosting, server dedicati e servizi cloud. Oltre a questo, offriamo consulenza sistemistica su sistemi Linux e manutenzione specializzata in DBMS, IT Security, Cloud e molto altro. Ci distinguiamo per l’expertise in hosting di primari CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart e Magento, affiancato da un servizio di supporto e consulenza di alto livello adatto per la Pubblica Amministrazione, PMI, ed aziende di qualsiasi dimensione.

Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt. Oracle Corporation detiene i diritti su Oracle®, MySQL®, e MyRocks®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; REDIS® è un marchio registrato di Redis Labs Ltd. F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB. Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; OpenCart® è un marchio registrato di OpenCart Limited. Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®. Amazon Web Services, Inc. detiene i diritti su AWS®; Google LLC detiene i diritti su Google Cloud™ e Chrome™; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®. Apache® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group. CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V. Hetzner Online GmbH detiene i diritti su Hetzner®; OVHcloud è un marchio registrato di OVH Groupe SAS; cPanel®, L.L.C. detiene i diritti su cPanel®; Plesk® è un marchio registrato di Plesk International GmbH; Facebook, Inc. detiene i diritti su Facebook®. Questo sito non è affiliato, sponsorizzato o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello europeo da MANAGED SERVER SRL, Via Enzo Ferrari, 9, 62012 Civitanova Marche (MC), Italia.

SOLO UN ATTIMO !

Vorresti vedere come gira il tuo WooCommerce sui nostri sistemi senza dover migrare nulla ? 

Inserisci l'indirizzo del tuo sito WooCommerce e otterrai una dimostrazione navigabile, senza dover fare assolutamente nulla e completamente gratis.

No grazie, i miei clienti preferiscono il sito lento.
Torna in alto