Al giorno d'oggi, non puoi permetterti di andare offline anche per un paio di minuti se hai a che fare con un pubblico globale poiché dà al tuo concorrente la possibilità di dimostrare che è davanti a te.
Il caching è un fattore importante se hai a che fare con lo sviluppo web. Aiuta davvero a scaricare il pesante lavoro che un server web deve fare per servire migliaia di richieste se non milioni contemporaneamente. Ci sono un sacco di opzioni disponibili al giorno d'oggi che forniscono un aumento delle prestazioni per la tua applicazione web, ma il concetto di base di cache rimane lo stesso.
Sono finiti i tempi in cui bastava creare un sito Web HTML statico che contenesse un paio di pagine e il gioco era fatto. In tal caso, non dovevi preoccuparti delle richieste concorrenti e del traffico pesante generato sul tuo sito web, poiché è molto più veloce inviare quelle pagine HTML statiche rispetto alle pagine web dinamiche che richiedono un bel po 'di risorse del server per costruire loro stessi.
Una tipica pagina dinamica fa molto, dall'interrogazione di un database al recupero di dati da fornitori di servizi di terze parti. Richiede molto per visualizzare una pagina che include molte informazioni in diversi formati. Nello specifico, non puoi permetterti di interrogare il database per recuperare le stesse informazioni complesse per ogni richiesta man mano che il traffico aumenta. Presto renderà i tuoi server limitati per le risorse, e prima che tu possa fare qualcosa loro se ne andranno!
Quindi è necessario qualcosa nel mezzo che accelera le cose, ed è qui che entra in scena la cache. L'idea della memorizzazione nella cache è molto semplice: memorizzi i risultati calcolati / formattati da qualche parte e recuperali quando necessario in modo da non doverlo ripetere. Quel "da qualche parte" potrebbe essere ovunque: il filesystem, la memoria o il database stesso.
Inoltre, ci sono molte opzioni disponibili per caching-memcached, Redis, Varnish e altro. È possibile utilizzare quelli secondo le proprie esigenze e talvolta la combinazione di più componenti consente anche di migliorare le prestazioni in modo esponenziale.
Come ci vorrebbe una serie completa per spiegare i dettagli della cache, e inoltre è qualcosa fuori dallo scopo di questo articolo, torneremo al contesto OpenCart e continueremo con esso nella prossima sezione.
Useremo l'ultima versione di OpenCart, quindi assicurati di averlo installato per seguire il codice.
La libreria di memorizzazione nella cache è fornita nel core stesso, quindi esploriamola subito. Vai avanti e apri il System / Library / cache.php
file nel tuo editor di testo preferito.
cache = new $ class ($ expire); else exit ('Errore: impossibile caricare il driver della cache'. $ driver. 'cache!'); public function get ($ key) return $ this-> cache-> get ($ key); set di funzioni pubbliche ($ key, $ value) return $ this-> cache-> set ($ key, $ value); public function delete ($ key) return $ this-> cache-> delete ($ key);
A partire dal costruttore, inizializza il driver cache passato nell'argomento costruttore. Se la classe è disponibile per l'adattatore di memorizzazione nella cache richiesto, verrà inizializzata su $ This-> Cache
proprietà, altrimenti uscirà con il messaggio di errore. Vedremo i diversi adattatori di memorizzazione nella cache nella prossima sezione.
Inoltre, ci sono tre funzioni wrapper che vengono utilizzate per eseguire tutte le operazioni relative alla memorizzazione nella cache.
Il ottenere
il metodo viene utilizzato per recuperare il valore dalla cache.
$ This-> Cache> get ($ key);
Il impostato
il metodo è usato per memorizzare il valore nella cache.
$ this-> cache-> set ($ key, $ value);
Il Elimina
il metodo viene utilizzato per eliminare il mapping chiave / valore dalla cache.
$ This-> Cache> delete ($ key);
Quindi è molto semplice usare le funzioni di memorizzazione nella cache anche nei moduli.
Ci sono molti posti nel front-end in cui i dati vengono recuperati dall'archivio della cache. Elenchiamo alcuni di loro:
Nel caso del caching dei file, troverai tutti i file della cache memorizzati sotto Sistema / cache
directory. Sebbene OpenCart cancelli la cache in corrispondenza degli eventi appropriati, puoi anche cancellare manualmente questi file per recuperare i dati più recenti.
Quindi è tutto ciò che riguarda il caching wrapper. Nella prossima sezione, vedremo i diversi adattatori di cache disponibili nel core e il vero e proprio sollevamento che viene fatto da loro.
Sono disponibili tre adattatori di memorizzazione nella cache nel nucleo di OpenCart-file, memcache e apc. L'adattatore di cache predefinito utilizzato in OpenCart è il file.
Ecco il frammento di index.php
che inizializza il $ di cache
oggetto con l'adattatore di caching predefinito.
// Cache $ cache = new Cache ('file'); $ registry-> set ('cache', $ cache);
Sfortunatamente, non c'è un modo configurabile che ti permetta di cambiare l'adattatore di caching perché è codificato. Detto questo, è possibile utilizzare OCMOD per modificare l'adattatore di cache predefinito senza alterare il file principale.
Poiché l'implementazione di ciascun adattatore di memorizzazione nella cache è quasi la stessa, guarderemo solo uno degli adattatori di memorizzazione nella cache per vedere cosa sta succedendo. Prendiamo Memcache, per esempio. Vai avanti e apri System / Library / cache / mem.php
. Puoi anche esplorare gli altri due adattatori file.php
e apc.php
nella stessa directory.
scadenza = $ scadenza; $ this-> cache = new \ Memcache (); $ this-> cache-> pconnect (CACHE_HOSTNAME, CACHE_PORT); get public function ($ key) return $ this-> cache-> get (CACHE_PREFIX. $ key); set di funzioni pubbliche ($ key, $ value) return $ this-> cache-> set (CACHE_PREFIX. $ chiave, $ valore, MEMCACHE_COMPRESSED, $ this-> scadenza); public function delete ($ key) $ this-> cache-> delete (CACHE_PREFIX. $ key);
Ogni adattatore di memorizzazione nella cache è definito nello spazio dei nomi "Cache" per evitare conflitti.
Richiama quei metodi che abbiamo discusso nell'ultima sezione: in realtà finiscono qui. Quindi, quando chiami il ottenere
metodo nel nascondiglio
classe, in realtà chiama il ottenere
metodo definito nell'attuale classe dell'adattatore, nel nostro caso è il Mem
classe.
La vera logica della manipolazione delle voci della cache avviene nei metodi della classe dell'adattatore. Come puoi vedere, nel costruttore del Mem
classe abbiamo inizializzato l'oggetto Memcache e stabilito la connessione usando il pconnect
metodo. Infine, stiamo utilizzando i metodi get, set ed delete dell'oggetto Memcache per manipolare le voci della cache.
D'altra parte, se si dà un'occhiata all'implementazione del gestore di cache dei file, ci vuole un po 'di sforzo per memorizzare e recuperare le voci della cache usando le funzioni del file system. A parte questo, non c'è differenza nell'implementazione.
Quindi è tutto ciò che riguarda gli adattatori di cache in OpenCart. Ovviamente, potresti andare avanti e creare il tuo gestore di cache personalizzato, se necessario. Hai solo bisogno di implementare i metodi richiesti e il gioco è fatto.
Questo è tutto per oggi. Spero che il tutorial ti sia piaciuto e che ti incoraggi a utilizzare la cache nei moduli personalizzati in base alle esigenze.
Oggi abbiamo discusso della memorizzazione nella cache in OpenCart. Abbiamo iniziato con le nozioni di base sul caching e, mentre procedevamo, abbiamo esplorato il modo in cui il caching viene utilizzato nel front-end. Infine, abbiamo esaminato i diversi adattatori di memorizzazione nella cache disponibili in OpenCart.
Sentiti libero di esprimere i tuoi pensieri sotto forma di domande e suggerimenti utilizzando il feed sottostante.