Transient per WordPress: guida all’uso

Transient per WordPress: guida all’uso

Il meccanismo dietro i transient di WordPress (in italiano “transitori”, per quanto sia più comune lasciare questo termine in inglese) è probabilmente uno dei più potenti disponibili per questo CMS, tanto che meriterebbe di essere trattato a parte all’interno delle fasi di ottimizzazione del sito WP. Cosa che non ho fatto, a conti fatti, perchè non tutti sono programmatori e non tutti dispongono di un programmatore per effettuare questo genere di operazioni, motivo per cui in molti casi i transient sono semplicemente trascurati. In effetti numerosi plugin ne fanno uso, ad ogni modo, in quanto permettono di  velocizzare notevolmente WordPress e sono una tecnica di ottimizzazione del codice decisamente pratica e sicura.

In breve, cosa fanno i wp transient? Essi permettono di definire varie aree del database (identificate da un’etichetta unica) come se fossero cache, in modo da pre-calcolare il risultato di una query, salvarla e poterla infine recuperare all’occorrenza. I siti che scrivono ogni tanto e leggono parecchio – esempio pratico: un blog molto visitato e poco aggiornato –  possono trarre molto giovamento da questa politica. Un po’ come avviene per i cookie, solitamente ad un transient è attivata una “data di scadenza“, che indica la durata massima dello stesso. Questo per una ragione molto naturale: se, ad esempio, imposto un transient per le ultime notizie in home, se faccio un aggiornamento oggi e la data di scadenza non è ancora arrivata, continuerò a vedere i vecchi dati (andando a vantaggio dell’efficenza della query, ma non della sua “attualità”, quindi). Motivo per cui impostarli (e farne uso in modo saggio) richiede un minimo di skill di programmazione e di buon senso, ed in questo articolo farò un po’ di esempi pratici di uso degli stessi.

LEGGI ANCHE:  Aggiungere i rich snippets a WordPress: guida all'uso di All In One Schema.org Rich Snippets

Come si usano i transient è presto detto: le funzioni principali da conoscere sono due, set_transient(etichetta, valore, durata) e get_transient(etichetta). La prima imposta la cache sull’oggetto identificato dall’etichetta – che può essere, tipicamente, il risultato di un WP_Query – mentre  la seconda ottiene il valore rapidamente sulla base della label specificata (che deve essere ovviamente univoca in tutto il codice).

Pubblicità

Il pattern tipico da sfruttare viene dal Codex, ed è il seguente:

if ( false === ( $special_query_results = get_transient( 'special_query_results' ) ) ) {
  $special_query_results = new WP_Query( 'cat=5&order=random&tag=tech&post_meta_key=thumbnail' );
  set_transient( 'special_query_results', $special_query_results, $x );
}

Il suo significato è presto detto: se esiste un transient per quella variabile, cioè se quella query è già stata fatta negli ultimi $x secondi, allora passa oltre perchè il valore lo ha già ottenuto mentre verificava la condizione.  Se invece non esiste entra nell’if, imposta il valore come desiderato (ad esempio: per popolare un carousel / slider, per mostrare i primi 20 articoli in home ecc.) ed imposta il transient con quell’etichetta per la volta successiva. Può sembrare un meccanismo contorto ma, a ben vedere, è facile intuire che non lo è davvero, se non forse per quella condizione iniziale if non proprio leggibile per chi ha meno esperienza con queste cose. Tenete conto, comunque, che se lavorate solo su query testuali (senza immagini o video) di poche righe il beneficio del transient potrebbe non cogliersi affatto, per cui sappiate anche decidere dove e quando farne uso.

Come esempio pratico, ho usato pesantemente i transient in un sito di gallerie fotografiche su cui sto lavorando in questi mesi, con il risultato di dimezzare, in media, il numero di query eseguite, e di abbattere i tempi di caricamento della home da quasi 8 secondi a meno di un secondo. Chiaro che, in questo caso, si è trattato di un’ottimizzazione tutt’altro che superflua, visto che all’occhio del cliente il sito “è lento” e “non carica la home“, mentre invece ora (con qualche accorgimento extra, come il lazy loading per la visualizzazione) i tempi sono decisamente più accettabili e, oserei dire, normali.

LEGGI ANCHE:  Migliori plugin WordPress per slideshow

Photo by Sean MacEntee

Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.