Quando si tratta di creare applicazioni web, una delle cose più importanti di cui dobbiamo essere costantemente consapevoli è la performance.
Come si suol dire, le prestazioni sono una caratteristica.
E indipendentemente dal fatto che tu sia un designer, uno sviluppatore o un utente, sai che questo in modo intuitivo è vero: quando si tratta di applicazioni, odiamo aspettare. Ci sentiamo frustrati quando le cose non funzionano abbastanza velocemente, o dobbiamo aspettare più a lungo di quanto crediamo che dovremmo.
A tal fine, la maggior parte dei moderni framework di sviluppo web consente di implementare un certo tipo di memorizzazione nella cache attraverso l'uso di determinate API e WordPress, anche se una base, non è diverso.
Quindi, mentre continuiamo la nostra discussione sul perché WordPress è una valida opzione per servire come base nello sviluppo di applicazioni web, daremo un'occhiata alle API fornite dall'applicazione principale, come funzionano, come possiamo sfruttarle per il nostro vantaggio e il modo in cui le prestazioni possono essere ulteriormente potenziate da ulteriori plug-in di memorizzazione nella cache.
In breve, la memorizzazione nella cache è importante perché ci consente di archiviare i dati che vengono recuperati di frequente in un posto in memoria in modo che possa essere recuperato rapidamente.
Quando lo guardi su una scala più ampia, questo diventa sempre più evidente quando più utenti visualizzano un sito. Con ciò intendo che se una singola persona, o un numero molto ristretto di persone, colpisce un sito Web e il sito ha i suoi dati memorizzati in un database, allora ogni volta che viene caricata una pagina, tali informazioni devono essere recuperate dal database, inserito nella pagina e quindi restituito all'utente.
Se viene istituito un livello di memorizzazione nella cache, le chiamate al database non devono essere effettuate con la frequenza. Invece, le informazioni possono essere estratte da un'area nella memoria che si traduce in un recupero più veloce e quindi tempi di caricamento della pagina più rapidi.
Entreremo nei dettagli tecnici di questo un po 'più avanti nell'articolo.
Se utilizzi WordPress per un periodo di tempo significativo, probabilmente conosci un certo numero di plug-in di memorizzazione nella cache disponibili.
Queste sono senza dubbio ottime soluzioni per accelerare il tuo sito web e / o l'applicazione web, ma solleva la domanda: se sono disponibili plug-in per questo, allora perché dovremmo preoccuparci?
È una domanda valida, certo, ma i plug-in possono fare solo tanto lavoro da soli.
Gli sviluppatori possono strutturare le loro applicazioni in modo che non solo funzionino bene senza meccanismi di caching, ma saranno anche notevolmente migliorate da detti plug-in di cache.
Con ciò intendo che questi plug-in di cache cercano i dati da archiviare in una determinata posizione in base a temi e applicazioni, e se possiamo farlo a livello di codice nel contesto del nostro lavoro, i plug-in risulteranno in prestazioni ancora maggiori.
Dopo aver dato un'occhiata alle API che abbiamo a disposizione, rivisiteremo questo argomento per vedere Come migliorano le prestazioni dei plug-in di memorizzazione nella cache più avanti nell'articolo.
Per introdurre il nostro primo livello di memorizzazione nella cache nell'applicazione, dobbiamo sfruttare l'API Transients di WordPress. Innanzitutto, nota che la definizione ufficiale di un transitorio è "qualcosa che esiste solo per un breve periodo di tempo".
Proprio come definito nel Codex:
[The Transient API] offre un modo semplice e standardizzato di memorizzare temporaneamente i dati memorizzati nella cache nel database dandogli un nome personalizzato e un periodo di tempo dopo il quale scadrà e sarà cancellato.
Ma cosa significa esattamente? Dopo tutto, i dati vengono ancora archiviati nel database, quindi perché è meglio che mantenere i dati memorizzati in qualsiasi altra tabella di database (come wp_options
tavolo?)?
Una volta che avremo rivisitato la discussione sulla cache e sui plugin, ne parleremo più in dettaglio.
L'impostazione di un valore transitorio è in realtà molto semplice ed è simile alla memorizzazione dei dati nella tabella delle opzioni.
In particolare, è necessario un valore chiave che identifichi in modo univoco i dati e quindi è necessario associare un valore a tale chiave. È inoltre necessario un tempo di scadenza (in secondi) per conservare i dati nella tabella prima di aggiornarli.
Quindi diciamo che vogliamo memorizzare il nome dell'utente corrente come ultimo o più recente utente attivo sul sito. Possiamo farlo sfruttando il wp_get_current_user ()
funzione.
Innanzitutto, imposteremo il valore in questo modo:
set_transient ('most_recent_user', wp_get_current_user () -> user_login, 12 * HOUR_IN_SECONDS)
Qui, nota un paio di cose:
HOUR_IN_SECONDS
le costanti è qualcosa che è stato introdotto in WordPress 3.5. Un elenco completo delle costanti è disponibile qui.Anche se questo è il modo in cui andiamo ambientazione un transitorio, questo ancora non spiega come possiamo gestire i transienti se non esistono, o se esistono già.
Ne parleremo un po 'più avanti nell'articolo.
Quando si tratta di recuperare i transienti, è molto simile al recupero di dati come meta dati o opzioni. Con ciò intendo che abbiamo semplicemente bisogno di sapere la chiave con cui recuperare le informazioni.
Pertanto, nel rispetto dell'esempio sopra riportato, possiamo recuperare l'utente più recente dell'applicazione con la seguente chiamata:
get_transient ('most_recent_user');
Questo ovviamente restituirà qualsiasi tipo di informazione che hai memorizzato, o se il transitorio è scaduto, ovvero sono trascorse più di 12 ore, la funzione restituirà il valore booleano di FALSE
.
Questa è la chiave da ricordare soprattutto quando si tenta di leggere i valori della cache e quindi di doverli prelevare da un'altra origine dati qualora non fossero disponibili nell'archivio temporaneo.
Daremo un'occhiata a un esempio completo di questo prima della fine dell'articolo.
Infine, se è necessario eliminare un transitorio per rimuoverlo completamente o rimuoverlo prima della sua scadenza definita per sostituirlo con un altro valore, utilizzare semplicemente la seguente funzione:
delete_transient ('most_recent_user');
Inoltre, questa funzione restituirà FALSE
se la cancellazione del valore transitorio non ha successo; altrimenti, ritornerà FALSE
.
Quando si tratta di impostare i tempi di scadenza dei valori della cache, ci sono diversi modi per rendere più semplice l'impostazione dei valori piuttosto che la manipolazione degli interi di base della musica.
Per esempio, MINUTE_IN_SECONDS
è molto più facile da usare rispetto a 60 soprattutto quando lo si moltiplica per, ad esempio, minuti, ore o giorni.
E a partire da Wordpress 3.5, sono state aggiunte diverse costanti all'applicazione principale che rende questi calcoli molto più facili da leggere.
Vale a dire:
MINUTE_IN_SECONDS
HOUR_IN_SECONDS
DAY_IN_SECONDS
WEEK_IN_SECONDS
YEAR_IN_SECONDS
Molto più facile da usare, da leggere e da scrivere, non è vero??
A questo punto, penso che sia importante guardare come possiamo impostare la transizione dei transitori con la memorizzazione di un valore nella tabella delle opzioni.
Ecco l'ordine in cui andremo a fare questo:
wp_options
tavolo.Quindi, nella seconda parte del codice, faremo quanto segue:
Detto ciò, diamo un'occhiata:
$ username = wp_get_current_user () -> user_name; add_option ('most_recent_user', $ username); // Controlla se il valore esiste nella cache if (FALSE! == get_transient ('most_recent_user')) // Se lo fa, lo elimineremo ... if (delete_transient ('most_recent_user')) // ... e memorizza l'utente più recente per un massimo di un minuto set_transient ('most_recent_user', MINUTE_IN_SECONDS); else // La cancellazione non è andata a buon fine, quindi registra l'errore // Ora prova a leggere il valore dalla cache. if (FALSE! == ($ username = get_transient ('most_recent_user')) // Dato che non esiste, lo leggeremo dalla tabella dell'opzione $ username = get_option ('most_recent_user'); // And poi aggiorneremo la cache set_transient ('most_recent_user', $ username, MINUTE_IN_SECONDS);
Nota che questo esempio non è completo, potrebbe essere refactored per essere un po 'più pulito e il codice dovrebbe essere astratto in funzioni che sono più rilevanti per l'applicazione, ma lo scopo di questo codice è mostrare come gestire la logica condizionale, opzioni e transienti.
Ora, con tutto ciò detto, possiamo rivisitare la domanda su come l'utilizzo dei transienti può migliorare le prestazioni dei plug-in.
Come abbiamo già detto:
Dopo aver dato un'occhiata alle API che abbiamo a disposizione, rivisiteremo questo argomento per vedere Come migliorano le prestazioni dei plug-in di memorizzazione nella cache più avanti nell'articolo.
Detto questo, il caching e il database WordPress hanno a che fare con il Posizione dei dati nel database.
Poiché i transienti sono archiviati in una posizione separata rispetto al resto dei dati, i plugin, ad esempio un plug-in basato su memcached, cercheranno i dati in cui sono memorizzati i transienti, quindi caricheranno i dati in memoria da quella posizione.
Pertanto, quando i dati vengono richiesti, verranno recuperati dalla memoria. Se i dati non esistono, verranno recuperati dal database.
Inoltre, se la programmazione viene eseguita correttamente, quando i dati non riescono a essere letti dalla cache e vengono recuperati dal database, verranno reinseriti nella cache in modo che al successivo recupero sia disponibile in memoria.
Infine, la cosa fondamentale da notare sulle informazioni transitori è che ha un periodo di scadenza. Ciò significa che i dati verranno archiviati solo in quest'area del database per un determinato periodo di tempo.
A tal fine, dobbiamo tenerne conto. Questo significa che ogni volta che cerchiamo di recuperare i transienti, dobbiamo assicurarci che esistano. Se non lo fanno, li tireremo da dove sono siamo individuato e quindi memorizzarli nella posizione corretta.
A questo punto, abbiamo coperto molte delle caratteristiche offerte da WordPress in riferimento a una base per lo sviluppo di applicazioni web.
Ma abbiamo un ultimo componente importante da coprire e questo è il modo di gestire le query personalizzate.
Certo, ci sono alcune grandi API in relazione alle query in esecuzione progettate per scopi specifici di WordPress WP_Query
e WP_User_Query
, ma daremo anche un'occhiata ad alcune delle strutture native che ci permettono di scrivere query personalizzate sul database usando oggetti WordPress definiti così come metodi che consentono una corretta sanificazione dei dati.
Ma copriremo tutto questo e molto altro materiale nel prossimo articolo.