Provatoo.NET

Diario di bordo di una sviluppatrice

Wordpress

WordPress wp_option è troppo grande

Ringrazio Kinsta.com per il suggerimento.

 

Oggi daremo un’occhiata alla tabella wp_options del database di WordPress. Si tratta di un argomento che spesso viene trascurato quando si parla di prestazioni generali di WordPress e del database. Soprattutto in siti più vecchi e di grandi dimensioni, questa tabella può essere la causa di tempi di interrogazione lenti causati da dati caricati automaticamente da plugin e temi di terze parti. Dai uno sguardo ai seguenti suggerimenti su come verificare, risolvere i problemi e ripulire la tua tabella wp_options.

Cos’è la tabella wp_options?

La tabella wp_options contiene ogni sorta di dati utili al tuo sito WordPress, tra cui:

  • URL del sito, URL della home, email di amministrazione, categoria predefinita, numero di post per pagina, formato dell’ora, ecc.
  • Impostazioni per plugin, temi, widget
  • Dati memorizzati temporaneamente nella cache

Tabella wp_options

Tabella wp_options

La tabella contiene i seguenti campi, uno dei quali ci interessa più degli altri quando si tratta di prestazioni:

  • option_id
  • option_name
  • option_value
  • autoload

autoload nella tabella wp_options

autoload nella tabella wp_options

Una delle cose più importanti da capire sulla tabella wp_options riguarda il campo autoload. Questo campo contiene un valore “yes” o “no” (flag). Questo essenzialmente controlla se è caricato o meno dalla funzione wp_load_alloptions(). I dati caricati automaticamente sono dati che vengono caricati su ogni pagina del tuo sito WordPress. Qui si applica la stessa metodologia che ti abbiamo illustrato per disabilitare certi script dal caricamento in tutto il sito. L’attributo autoload è impostato su “yes” di default per gli sviluppatori, ma in teoria non tutti i plugin dovrebbero caricare i loro dati in tutte le pagina.

Il problema in cui possono incorrere i siti WordPress si verifica quando c’è una grande quantità di dati caricati automaticamente nella tabella wp_options. Questo è in genere il risultato di quanto segue:

  • I dati vengono caricati automaticamente da un plugin quando in realtà dovrebbe essere impostato su “no”. Un buon esempio viene offerto da un plugin per moduli di contatto. Ha davvero bisogno di caricare i dati su ogni pagina, o solo sulla pagina dei contatti?
  • Plugin o temi sono stati rimossi dal sito WordPress, ma le loro opzioni sono ancora nella tabella wp_options. Ciò potrebbe significare che dati non necessari che sono caricati automaticamente vengono riportati nei risultati delle interrogazioni ad ogni richiesta.
  • Gli sviluppatori di plugin e temi caricano i dati nella tabella wp_options invece di utilizzare proprie tabelle. Ci sono argomenti a favore e contro questa prassi, dal momento che alcuni sviluppatori preferiscono i plugin che non creano tabelle aggiuntive. Tuttavia, la tabella wp_options non è stata progettata per contenere migliaia di righe.

Quanto sono troppi i dati caricati automaticamente? Questi possono variare, naturalmente, ma idealmente, si potrebbe desiderare che siano compresi tra 300 KB e 1 MB. Una volta che ci si comincia ad avvicinare all’intervallo di 3-5 MB o più, molto probabilmente ci sono cose che potrebbero essere ottimizzate o rimosse dal caricamento automatico. E qualsiasi cosa al di sopra di 10 MB dovrebbe essere affrontata immediatamente. Ciò non significa sempre che questo causerà un problema, ma è sicuramente un buon punto da cui cominciare.

Risoluzione dei Problemi Relativi ai Dati Caricati Automaticamente nella Tabella wp_options

Se stai riscontrando lentezza sul tuo sito WordPress, ciò potrebbe essere dovuto a una query o dati caricati automaticamente da un vecchio plugin di WordPress. Di seguito mostreremo come controllare le dimensioni dei dati caricati in automatico nel tuo database, analizzeremo in profondità i dati di un sito live e condivideremo con voi le operazioni effettuate per ripulirlo.

Controllare le Dimensioni dei Dati Caricati Automaticamente

La prima cosa da fare è controllare l’attuale dimensione dei dati caricati in automatico sul sito WordPress. A questo scopo, accedi a phpMyAdmin. Fai clic sul tuo database sulla sinistra e poi sulla scheda SQL. Quindi inserisci il seguente comando e premi “Vai”.

SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';

Potrebbe essere necessario modificare la query qui sopra se il tuo sito WordPress utilizza un prefisso diverso da wp_.

Query autoload size in phpMyAdmin

Query autoload size in phpMyAdmin

Il campo autoload_size verrà restituito in byte. Ci sono 1024 byte in un KB e 1024 KB in un MB. Quindi nel nostro caso 249.025 byte equivalgono a 0.25 MB. Quindi per questo sito, questa è una buona dimensione! Se si ottiene qualcosa al di sotto di 1 MB non bisognerebbe preoccuparsi. Tuttavia, se il risultato è di molto superiore a 1 MB, allora sarà opportuno proseguire la lettura di questo tutorial.

Dimensioni autoload

Dimensioni autoload

Di seguito è riportato un sito che stavamo testando nel quale sono stati restituiti 137.724.715 byte o, meglio, 137 MB. Questo è un buon esempio di un sito in cui c’è qualcosa di decisamente sbagliato, o piuttosto in cui ci sono cose da ottimizzare.

Grande quantità di dati automatici nella tabella wp_options

Grande quantità di dati automatici nella tabella wp_options

É anche possibile utilizzare una query più lunga come quella che segue. Questo esempio mostra la dimensione dei dati caricati automaticamente, il numero di voci che ci sono nella tabella e le prime 10 voci per dimensione.

SELECT 'autoloaded data in KiB' as name, ROUND(SUM(LENGTH(option_value))/ 1024) as value FROM wp_options WHERE autoload='yes'
UNION
SELECT 'autoloaded data count', count(*) FROM wp_options WHERE autoload='yes'
UNION
(SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10)

Query MySQL avanzata dati automatici

Query MySQL avanzata dati automatici

Se avete accesso a New Relic, potete utilizzarlo anche per aiutarvi a risolvere i problemi delle query relative alla tabella wp_options. La scheda Database metterà in evidenza la tabella e il tipo di query che impiega più tempo. Se selezioni una delle voci nell’elenco, potrai visualizzare ulteriori dettagli, comprese alcune query di esempio. Nell’esempio qui sotto, sono evidenti i dati caricati automaticamente nella tabella wp_options. Era già quasi certo, ma una rapida analisi del sito in questione ha confermato quasi 250 MB di dati caricati automaticamente.

Query lenta

New Relic query lenta – tabella wp_options

Ordinare i Principali Dati Caricati Automaticamente

Il passo successivo sarebbe quello di ordinare rapidamente i principali elementi contenenti dati caricati in automatico. Quella che segue è una veloce istruzione SQL che potete utilizzare per listare i primi 10 elementi:

SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 10;

Anche in questo caso, potrebbe essere necessario modificare questa query se il vostro sito WordPress utilizza un prefisso diverso da wp_.

Principali dati automatici

Principali dati automatici nella tabella wp_options

Scavare tra Specifici Dati Caricati Automaticamente in wp_options

Il passo successivo è scavare tra alcuni dei principali dati caricati automaticamente.

301_redirects

Come si vede qui sopra, la principale opzione di caricamento automatico è 301_redirects. Questo è probabilmente correlato direttamente ad un plugin di reindirizzamento presente nel sito, o al plugin WordPress SEO, che pure dispone di una funzione di reindirizzamento. In questo caso, la miglior consiglio è quello di implementare i reindirizzamenti a livello di server.

Perché? Poiché l’utilizzo di plugin gratuiti di WordPress per implementare i reindirizzamenti può a volte causare problemi di prestazioni, dato che molti di essi utilizzano la funzione wp_redirect, che richiede l’esecuzione di codice e risorse aggiuntivi. E, naturalmente, carica automaticamente dati nella tabella wp_options.

Se sei un cliente di Kinsta, puoi aggiungere facilmente i tuoi redirect a livello di server utilizzando il nostro tool di gestione delle regole di reindirizzamento. Questo non è solo uno strumento migliore ai fini delle performance, ma ti consente anche di avere potenzialmente un plugin in meno di cui preoccuparti!

 

Provatoo.NET

Piccola imprenditrice, ma solo di statura :D