0

Come ottimizzare WordPress: salvataggio automatico, revisioni e cron job

WordPress, si sa, può diventare davvero molto pesante, e ciò può portare a un sovraccarico di risorse dell’account, con conseguente limitazione delle prestazioni.

Le risorse dell’account, strano ma vero, possono essere saturate anche soltanto dall’amministratore (o dagli amministratori), effettuando semplici operazioni dall’interno della bacheca di WordPress. In questa guida vedremo come limitare l’uso delle risorse da parte degli amministratori di WordPress, ed evitare cattive sorprese.

Salvataggio automatico delle bozze

WordPress include una funzione per ‘salvare automaticamente‘ ogni post o pagina che stai modificando costantemente (tramite AJAX, un processo silenzioso eseguito in background). Questa caratteristica è ottima per i creatori di contenuti, perché se commettessero degli errori, non dovrebbero ricominciare tutto da capo. Ma il problema principale è che viene eseguita più di una volta al minuto. Digitando solo 1 o 2 parole e interrompendo improvvisamente la scrittura, il messaggio verrà automaticamente salvato di nuovo come bozza.

Abbiamo visto applicazioni WordPress che vengono eseguite più di 2000 volte in 2 ore, il che può causare un carico significativo su un server, soprattutto dove possono esserci diverse centinaia di siti Web che utilizzano WordPress. A peggiorare le cose, se hai installato tanti plugin, anch’essi possono interagire o chiamare la funzione di salvataggio automatico mentre stai scrivendo o pubblicando un post, sovraccaricando il server in misura ancora maggiore.

Per risolvere il problema, segui questa semplice procedura

  1. Trova il file wp-config.php all’interno della cartella public_html del tuo account, tramite il file manager del cPanel o tramite un client FTP
  2. Aprilo con il tuo editor di testo preferito
  3. Arriva in fondo (dove dice /* That’s all, stop editing! Happy blogging. */ – o equivalente in italiano)
  4. Prima di quella riga, aggiungi la seguente:
define('AUTOSAVE_INTERVAL', 1800 );  // in secondi (il default è 60)

Così facendo, WordPress salverà una bozza ogni 1800 secondi = ogni 30 minuti, anzichè ogni minuto, limitando nettamente il carico sul server. Questo è soltanto un valore consigliato, ma puoi regolarlo come meglio credi. Se vuoi disabilitare completamente il salvataggio automatico, puoi impostare autosave_interval a 86400 secondi, ossia la quantità di secondi in un intero giorno.

Limitare (o disabilitare) le revisioni degli articoli o delle pagine

Strettamente collegato al salvataggio automatico in bozza, c’è il concetto di revisione di un articolo o di una pagina. Funziona così: ogni bozza è “ripristinabile”, ossia in altre parole WordPress consente di “tornare indietro” a un vecchio punto di scrittura di un articolo o una pagina, e ripartire da quello. Va da sè che con l’andare avanti con la scrittura, bozza dopo bozza, si creano tantissime revisioni inutili. Ogni creazione di revisione si traduce inoltre in una sequenza di operazioni sul server, che ne aumentano il carico. Ma sei sicuro di aver bisogno di 5000 revisioni per ogni articolo? Non è meglio disabilitarle, o comunque limitarle?

Per farlo, apri nuovamente il file wp-config.php, e scrivi al suo interno ALTERNATIVAMENTE una di queste due righe

define('WP_POST_REVISIONS', false ); // per disabilitare le revisioni

oppure

define('WP_POST_REVISIONS', 5); // per mantenere, ad esempio, soltanto 5 revisioni

Ribadiamo: queste due righe NON VANNO SCRITTE ENTRAMBE, ma soltanto una, in base al fatto che tu voglia disabilitare del tutto le revisioni, oppure mantenerne un certo numero (5 nell’esempio, ma puoi scegliere di inserire un qualsiasi valore).

Disabilitare wp-cron.php e rimpiazzarlo con un vero cron job

Altra cosa importante da fare per ottimizzare un sito WordPress è “silenziare” il file wp-cron.php. Esso è lo scheduler dei task di WordPress, che si occupa di svariate cose, tra cui il controllo degli aggiornamenti e la pubblicazione di articoli programmati. Entra in gioco su ogni singola pagina caricata.

Se il tuo sito web non è stato visitato da un po’ di tempo, avrà molte attività perse da recuperare, e ciò potrà aumentare notevolmente il tempo di caricamento, causando ulteriori problemi di utilizzo delle risorse. Quindi, come risolvere questo problema? È semplicissimo.

  • 1) Disabilita wp-cron di WordPress dal wp-config.php
  • 2) Imposta wp-cron come un vero cron job da cPanel

Questa tecnica migliorerà il tempo di caricamento del tuo sito web e assicurerà che wp-cron esegua le attività di manutenzione, indipendentemente dalle visite al tuo sito web. Iniziamo!

Disabilitare wp-cron di WordPress dal wp-config

Accedi al cPanel e apri il file manager (o alternativamente, accedi al tuo server via FTP), quindi apri il file wp-config.php. Inserisci la seguente riga:

define('DISABLE_WP_CRON', true);

Passo 1 completato!

Impostare wp-cron come cron job da cPanel

Passiamo al passo 2, leggermente più complicato ma nemmeno troppo. Dal cPanel, seleziona ‘processi cron‘ sotto il tab Avanzate:

Siamo pronti per creare un nuovo cron job: nel menu a tendina ‘impostazioni comuni’ seleziona “Una volta all’ora“.

Dove c’è scritto “Comando“, inserisci la seguente riga:

/usr/bin/php /home/USERNAME/public_html/wp-cron.php >/dev/null 2>&1

IMPORTANTE: sostituisci USERNAME con il tuo username del cPanel!!!

Clicca infine su ‘Aggiungi nuovo processo cron‘. Se hai un piano professional con più siti Web WordPress all’interno dello stesso account cPanel, ti consigliamo di configurare i cron job in modo che eseguano in modo sequenziale, ad esempio ogni mezz’ora se hai 2 siti web, ogni quarto d’ora se ne hai 4 e così via.

Limitare admin-ajax con Heartbeat Control

L’ultimo consiglio per ottimizzare un’installazione di WordPress è limitare le chiamate ad admin-ajax.php effettuate dall’API Heartbeat. Essa è un’ottima funzionalità che fornisce comunicazione in tempo reale tra il server e il browser quando si accede alla bacheca di WordPress. Utilizza il file /wp-admin/admin-ajax.php per eseguire chiamate AJAX dal browser, che vengono inviate ogni 15 secondi in modifica post e ogni 60 secondi nella bacheca.

E’ molto utile, ma se hai l’abitudine di lasciare la bacheca aperta per lunghi periodi (ad esempio quando scrivi o modifichi post), le richieste AJAX possono accumularsi e generare un elevato utilizzo della CPU, portando a problemi di prestazioni del server. Con il plugin Heartbeat Control, puoi facilmente limitare o interrompere completamente l’attività dell’API Heartbeat di WordPress. Puoi anche aggiungere regole solo per zone specifiche (bacheca, frontend o editor degli articoli).

Quindi: per risolvere, basta scaricare, installare e configurare il plugin Heartbeat Control.

La configurazione è molto semplice, basta abilitarlo e impostare una frequenza elevata, ad esempio 120 secondi, o disabilitare del tutto l’API Heartbeat.

IMPORTANTE: Se hai installato Litespeed, non c’è bisogno di installare Heartbeat Control! Litespeed infatti ha la possibilità di modificare il comportamento dell’API Heartbeat direttamente dalla sua interfaccia. Basta selezionare la voce di menu Toolbox e selezionare il quarto tab, che appunto si chiama Heartbeat.

La configurazione è molto semplice: basta abilitare il controllo sull’API Heartbeat su frontend, backend e editor, impostando il valore di TTL massimo, ossia 120 secondi, come da schermata sottostante.

Alla fine, non dimenticare di salvare le modifiche. Usando Litespeed è quindi possibile evitare di installare un plugin extra, con tutto quello che ne consegue in materia di leggerezza del sito.

Conclusioni

Abbiamo visto 4 utili mosse da fare per ottimizzare WordPress. Se vuoi ottimizzare ulteriormente il tuo sito, ti consigliamo di consultare uno sviluppatore esperto o richiedere una nostra consulenza. Ricorda anche che, se il tuo sito è affamato di risorse, potresti prendere in considerazione di aggiungere più memoria RAM al tuo piano hosting, passando ad esempio ad un piano semidedicato, poiché i 512 MB dei piani condivisi standard (Starter e Professional), potrebbero non essere sufficienti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *