Audit delle estensioni prima di migrare da Joomla 3 a Joomla 5 o 6 Come gestire SEO e hreflang in un sito multilingua Hugo Plugin WordPress lento: il problema è nel database o nelle query? Come aggiornare WordPress da Excel senza creare duplicati Importare Excel in WordPress con un plugin personalizzato Migrazione WordPress: come gestire DNS, SSL ed email senza interruzioni ChatGPT Ads: la pubblicità a pagamento sfida Google Ads Localizzazione di un sito web per il mercato italiano Localizzazione e-commerce per l’Italia: catalogo, checkout e supporto tecnico Localizzazione professionale di siti web in italiano: oltre la traduzione Presa in carico di un sito web italiano esistente senza rifarlo da zero Web developer italiano per assistenza su siti internazionali Codex vs prompt fisso: quale AI scegliere per un progetto web? Errore 500 in wp-admin: cause comuni e soluzioni efficaci Sito WordPress bloccato dopo un aggiornamento: come recuperarlo Audit delle estensioni prima di migrare da Joomla 3 a Joomla 5 o 6 Come gestire SEO e hreflang in un sito multilingua Hugo Plugin WordPress lento: il problema è nel database o nelle query? Come aggiornare WordPress da Excel senza creare duplicati Importare Excel in WordPress con un plugin personalizzato Migrazione WordPress: come gestire DNS, SSL ed email senza interruzioni ChatGPT Ads: la pubblicità a pagamento sfida Google Ads Localizzazione di un sito web per il mercato italiano Localizzazione e-commerce per l’Italia: catalogo, checkout e supporto tecnico Localizzazione professionale di siti web in italiano: oltre la traduzione Presa in carico di un sito web italiano esistente senza rifarlo da zero Web developer italiano per assistenza su siti internazionali Codex vs prompt fisso: quale AI scegliere per un progetto web? Errore 500 in wp-admin: cause comuni e soluzioni efficaci Sito WordPress bloccato dopo un aggiornamento: come recuperarlo
Plugin WordPress lento: il problema è nel database o nelle query?

Plugin WordPress lento: il problema è nel database o nelle query?

Autore Graziano De Maio - Gdmtech
Ti auguro buona lettura e mi raccomando, se dopo aver letto questo articolo hai bisogno di aiuto non esitare a contattarmi.
Autore: Graziano De Maio | Titolare di Gdmtech
Indice dei contenuti

Un sito WordPress lento non dimostra automaticamente che il database sia danneggiato o che un plugin debba essere sostituito. La stessa attesa può dipendere da una query inefficiente, da centinaia di interrogazioni brevi, da una tabella cresciuta nel tempo, da una chiamata verso un servizio esterno oppure dalle risorse disponibili sul server.

Prima di intervenire bisogna localizzare il rallentamento. Disattivare componenti senza misurazioni può cambiare il comportamento del sito, ma non chiarisce quale operazione stesse consumando tempo e perché.

Questo approfondimento prosegue l’analisi su come individuare un plugin WordPress che rallenta il sito, concentrandosi sul rapporto fra codice, query SQL e struttura del database.

Come capire se la lentezza nasce dal database WordPress

Il database conserva articoli, pagine, impostazioni, utenti, tassonomie e molti dati aggiunti dai plugin. Quando WordPress costruisce una pagina, il codice interroga queste tabelle per recuperare le informazioni necessarie.

Il database diventa un sospetto concreto quando il tempo di risposta del server aumenta soprattutto nelle pagine che devono cercare, filtrare o aggregare molti record. Alcuni segnali da verificare sono:

  • backoffice lento nelle liste di ordini, utenti o contenuti;
  • ricerche e filtri che impiegano molto più tempo della pagina iniziale;
  • query che esaminano molti record per restituirne pochi;
  • tabelle molto più grandi rispetto ai dati effettivamente utilizzati;
  • rallentamenti che aumentano insieme al numero di contenuti o transazioni;
  • operazioni pianificate che competono con le richieste degli utenti.

Questi segnali non sono una diagnosi. Una pagina amministrativa complessa può essere lenta anche per elaborazioni PHP o chiamate HTTP. Occorre osservare l’intera richiesta e separare il tempo trascorso nel database da quello impiegato nelle altre operazioni.

Query lenta e troppe query: due problemi differenti

Una singola query può essere lenta perché filtra o ordina dati senza un indice adatto, combina molte tabelle oppure usa condizioni difficili da ottimizzare. In altri casi ogni interrogazione è relativamente rapida, ma il plugin ne esegue un numero eccessivo nella stessa richiesta.

La distinzione cambia la soluzione:

  • una query lenta richiede l’analisi della sua struttura e del piano di esecuzione;
  • molte query ripetute possono richiedere cache, pre-caricamento o una diversa organizzazione del codice;
  • query simili eseguite in un ciclo possono indicare che i dati vengono richiesti uno alla volta;
  • una query corretta su una tabella enorme può richiedere manutenzione o una strategia di archiviazione.

Limitarsi al numero totale di query può essere fuorviante. Cento interrogazioni semplici non sono necessariamente peggiori di una sola query molto costosa. Servono durata, chiamante, contenuto della query e contesto della pagina.

Come attribuire le query a un plugin WordPress

Gli strumenti di debug possono mostrare quali query sono state eseguite, quanto sono durate e quale parte del codice le ha richiamate. La documentazione WordPress su debug e SAVEQUERIES descrive la registrazione di query, durata e funzione chiamante nell’array $wpdb->queries; avverte anche che questa raccolta ha un impatto sulle prestazioni e va disattivata al termine del debug.

Plugin diagnostici come Query Monitor possono collegare query, errori PHP, hook, chiamate HTTP e componenti coinvolti. Il dato utile non è soltanto il nome del plugin mostrato nel report, ma la sequenza che porta alla richiesta lenta.

L’analisi dovrebbe essere eseguita preferibilmente in staging oppure durante una finestra controllata. Attivare strumenti invasivi su un sito trafficato può alterare le misurazioni e aggiungere carico proprio mentre si cerca il problema.

Una procedura pratica comprende:

  1. misurare una pagina rappresentativa senza cambiare configurazione;
  2. ripetere la stessa operazione con gli strumenti diagnostici;
  3. individuare query lente, duplicate o ripetute;
  4. associare ogni query al codice che la genera;
  5. confrontare frontend, backoffice e operazioni pianificate;
  6. applicare una modifica alla volta e ripetere il test.

Tabelle WordPress cresciute e dati non più utilizzati

Un plugin può lasciare nel database log, sessioni, code, revisioni o metadati che continuano a crescere. La dimensione, da sola, non indica un errore: un negozio attivo può avere tabelle grandi ma ben interrogate. Il problema nasce quando la crescita non è governata oppure le query devono attraversare dati che non servono più.

Prima di cancellare occorre identificare proprietario, funzione e relazioni di ogni tabella. Rimuovere righe perché sembrano vecchie può compromettere ordini, configurazioni o processi ancora attivi.

Le verifiche possibili includono:

  • tabelle create dai plugin e relativo volume;
  • politiche di conservazione dei log;
  • processi di pulizia previsti dal componente;
  • record orfani realmente dimostrati;
  • indici presenti sulle colonne usate per filtri e ordinamenti;
  • crescita nel tempo, confrontata con l’attività del sito.

Un backup non sostituisce la comprensione dei dati, ma deve precedere qualsiasi pulizia o modifica strutturale. Le operazioni vanno prima provate su una copia coerente del sito.

wp_options e valori autoload caricati a ogni richiesta

La tabella delle opzioni merita un controllo specifico perché alcuni valori vengono caricati automaticamente durante molte richieste WordPress. Plugin e temi possono salvare configurazioni, cache o dati temporanei con caricamento automatico anche quando non servono in tutte le pagine.

Il problema non si risolve eliminando in blocco le opzioni più grandi. Alcune sono necessarie al core o a componenti attivi. Bisogna capire chi le ha create, se vengono ancora usate e se il caricamento automatico è appropriato.

Anche transient scaduti, attività pianificate e code applicative possono contribuire alla lentezza, ma dipendono dal plugin e dalla sua architettura. La manutenzione deve rispettare le API e le procedure del sistema che possiede quei dati.

Quando il database non è la causa del plugin lento

Una diagnosi limitata a MySQL rischia di ignorare altre attese. Un plugin può rallentare la pagina perché:

  • chiama un’API esterna che risponde lentamente;
  • elabora immagini o file durante la richiesta;
  • esegue calcoli PHP pesanti;
  • genera molti script e fogli di stile nel browser;
  • avvia operazioni pianificate in momenti inopportuni;
  • incontra limiti di CPU, memoria o processi dell’hosting;
  • non interagisce correttamente con cache e CDN.

I test frontend misurano anche rete, immagini e JavaScript, mentre il tempo di risposta iniziale coinvolge server, PHP e database. Un buon punteggio o un cattivo punteggio in un singolo strumento non identifica automaticamente il componente responsabile.

È utile confrontare pagine che usano il plugin con pagine simili che non lo usano, mantenendo per quanto possibile le stesse condizioni. Se il problema compare solo in un’azione specifica, quella richiesta offre un punto di partenza migliore rispetto alla home page.

Come intervenire su query e database senza andare a tentativi

La soluzione dipende dalla causa misurata. Può consistere in una configurazione diversa, nell’aggiornamento del plugin, nella correzione di una query, nell’aggiunta ragionata di un indice, in una cache applicativa oppure nella separazione di un processo pesante dalla richiesta dell’utente.

In altri casi occorre:

  • ridurre query ripetute nel codice;
  • recuperare soltanto i campi necessari;
  • evitare filtri complessi costruiti su metadati non adatti a grandi volumi;
  • archiviare dati storici secondo regole concordate;
  • spostare elaborazioni lunghe in processi asincroni;
  • correggere chiamate esterne prive di timeout o gestione degli errori;
  • sostituire un componente quando la sua architettura non è adatta al progetto.

Gli indici non devono essere aggiunti in modo indiscriminato: occupano spazio e incidono sulle scritture. Anche la cache può nascondere temporaneamente una query inefficiente senza risolvere il comportamento che la genera.

Quando serve uno sviluppo WordPress personalizzato

Se il plugin svolge una funzione importante ma produce query non adeguate ai volumi reali, la scelta non è sempre fra tenerlo e rimuoverlo. Può essere possibile intervenire tramite hook, integrare una cache, riscrivere una funzione circoscritta o trasferire alcuni dati in una struttura più adatta.

Lo sviluppo personalizzato è sensato quando il requisito aziendale è stabile, il collo di bottiglia è stato localizzato e la modifica può essere mantenuta nel tempo. Non dovrebbe nascere da un sospetto generico sul database.

Prima di modificare produzione servono una copia di test, misurazioni ripetibili e un piano di ripristino. Se devi capire perché un plugin rallenta il sito, posso eseguire un’analisi tecnica e assistenza WordPress per distinguere query, database, codice e limiti dell’hosting prima di proporre l’intervento.

Autore Graziano De Maio - Gdmtech
Ti auguro buona lettura e mi raccomando, se dopo aver letto questo articolo hai bisogno di aiuto non esitare a contattarmi.
Autore: Graziano De Maio | Titolare di Gdmtech
Graziano De Maio, Web designer, SEO specialist
Graziano De Maio
Web Developer, SEO Specialist
Gdmtech Web Agency
Via Stefanardo da Vimercate 28 - (Milano)
Via Spinedi 55 - Postalesio (Sondrio)
Info e contatti