La tabella delle opzioni nel database di WordPress diventa spesso un collo di bottiglia per le prestazioni, in particolare nei siti più vecchi e forse più complessi. In questo articolo ti mostro alcuni suggerimenti per aiutarti a prendere il controllo della tabella wp_options.
La tabella wp_options è un’area che spesso viene trascurata quando si tratta di prestazioni generali di WordPress. Soprattutto nei siti più grandi questa tabella può causare tempi di caricamento lenti a causa dei dati in autoload che sono lasciati da plugin e temi di terze parti.
A cosa serve la tabella wp_options?
La tabella wp_options contiene diversi tipi di dati come ad esempio:
- URL del sito
- URL della homepage
- e-mail dell’amministratore
- categoria predefinita
- numero di post per pagina
- formato della data
- impostazioni per plugin, temi, widget, …
- dati temporaneamente memorizzati nella cache
- etc, …
La tabella contiene i seguenti campi (colonne), uno dei quali ci interessa in particolar modo quando si tratta di prestazioni:
- option_id
- option_name
- option_value
- autoload
Una cosa importante da conoscere sulla tabella wp_options è la funzione del campo autoload. Questo campo contiene un valore che può essere impostato come yes oppure no. Il valore controlla essenzialmente se l’opzione deve essere caricata dalla funzione wp_load_alloptions()
oppure no.
I dati autoload sono i dati che vengono caricati in ogni pagina del sito di WordPress. L’attributo autoload è impostato su “yes” per impostazione predefinita per gli sviluppatori, ma non tutti i plugin dovrebbero teoricamente caricare i propri dati su ogni pagina.
Il problema nasce quando i dati in autoload diventano tanti e pesanti da caricare. Questo in genere viene causato quando:
- I dati di un plugin vengono caricati su tutte le pagine del sito quando invece non servirebbe. Un buon esempio è dato dai plugin di moduli di contatto. Il plugin deve caricare i dati su ogni pagina o solo la pagina di contatto?
- I plugin o i temi sono stati rimossi dal sito WordPress ma le loro opzioni sono rimaste nella tabella wp_options. Questa dimenticanza potrebbe far caricare dati non necessari ad ogni richiesta, rallentando l’esecuzione della pagina.
- Gli sviluppatori di plugin e temi salvano dati nella tabella wp_options invece di utilizzare le proprie tabelle. Ci sono sostenitori per entrambe le modalità di salvataggio delle opzioni, infatti diversi sviluppatori preferiscono plugin che non creano tabelle aggiuntive nel database. Tuttavia, la tabella wp_options non è stata progettata per contenere migliaia di righe.
Qual è una buona dimensione per le opzioni in autoload e quando invece è troppo? Naturalmente questo può variare, ma come linea guida generale si considera un buon valore se inferiore ad 1 MB. Quando i dati in autoload pesano più di 3 MB ci sono probabilmente cose che possono essere ottimizzate o rimosse dal caricamento automatico. Ad ogni modo situazioni con autoload maggiori di 10 MB andrebbero risolte al più presto.
Controlla la dimensione dei dati autoload
Se stai notando rallentamenti nel tuo sito WordPress, il problema potrebbe essere dovuto ad una query o dati autoloaded lasciati da un vecchio plugin. Di seguito ti mostro come controllare la dimensione dei dati autoload nel tuo database. Per effettuare questa operazione accedi a phpMyAdmin. Fai clic sul database da analizzare nella colonna a sinistra, quindi sulla scheda SQL nel menu orizzontale in alto. Quindi immetti il seguente comando e premi “Go”.
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';
Potrebbe essere necessario modificare la query sopra se il tuo sito di WordPress utilizza un prefisso diverso da wp_.
L’autoload_size restituirà il valore in byte. Ci sono 1000 byte in un KB e 1000 KB in un MB. Quindi nel nostro caso, 193.441 byte equivale a 0,19 MB. Per questo sito è una buona dimensione! Se ottieni valori inferiori ad 1 MB non dovresti preoccuparti. Tuttavia, se il risultato è molto più grande, continua con questo tutorial.
Ordina i dati per dimensione di autoload
Il prossimo passo è quello di ordinare gli elementi in autoload, dal più pesante al più leggero. Ecco un rapido comando SQL che puoi utilizzare per elencare i primi 20 elementi:
SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 20;
Ancora una volta, potrebbe essere necessario modificare la query se il tuo sito di WordPress utilizza un prefisso diverso da wp_.
Decidi cosa eliminare
L’ultimo passo è decidere cosa lasciare e cosa eliminarea.
Se vedi nella TOP 20 appena generata opzioni con nomi che non riconosci, cerca su Google, sarà facile risalire al plugin che ha generato quel campo.
Elimina tutti i campi di opzioni e temi che non stai più usando. Io eseguo questo controllo una volta l’anno e, sebbene non sia mia abitudine testare nuovi plugin sul sito in produzione, trovo sempre qualcosa da eliminare.
Fammi sapere nei commenti se la pulizia della tabella wp_options ti ha portato benefici!