Crea una scheda di caching personalizzata in OpenCart

Non importa il framework web con cui stai lavorando, il caching è uno strumento importante da avere nel gattino per migliorare le prestazioni generali del tuo sito web. Hai diversi meccanismi di caching tra cui scegliere, come file, APC, Memcached e altro. Puoi decidere in base alle tue esigenze e a volte serve una combinazione di più di un adattatore per giustificare il risultato desiderato.

OpenCart include già un paio di adattatori di memorizzazione nella cache nel nucleo, ed è questo che fornisce un modello da seguire se si desidera crearne uno personalizzato. Per implementare un adattatore personalizzato, devi solo creare metodi come da contratto e includere la tua logica in ogni metodo, e il gioco è fatto! Sarà raccolto automaticamente come parte del meccanismo di caching di OpenCart.

Per ogni adattatore di memorizzazione nella cache, è solo il meccanismo sottostante per archiviare e recuperare i dati che cambiano. Lo stesso vale per il nostro adattatore per la memorizzazione nella cache del database personalizzato, ed è per questo che abbiamo bisogno di creare uno schema personalizzato che contenga i dati di memorizzazione nella cache.

Assicurati di aver installato l'ultima versione di OpenCart prima di procedere e iniziare a creare un adattatore personalizzato.

Creare uno schema adattatore

È un dbcache La tabella MySQL che conserverà i dati di memorizzazione nella cache. Quindi, creiamo!

CREATE TABLE SE NON ESISTE 'DB_PREFIX dbcache' ('chiave' varchar (255) NOT NULL, 'value' longblob NOT NULL, 'expire' int (11) NOT NULL) ENGINE = InnoDB DEFAULT CHARSET = utf8;

La cosa importante da notare qui è il prefisso del database; se la stai usando, assicurati di nominare il tuo tavolo di conseguenza. Ad esempio, nel caso del prefisso del database oc_, dovresti creare una tabella chiamata oc_dbcache.

Oltre a ciò, la struttura della tabella è piuttosto semplice e contiene solo tre colonne: chiave, valore e scadenza. La colonna chiave contiene la chiave di caching, la colonna del valore contiene il valore associato e la colonna di scadenza contiene il timestamp UNIX.

Creare un file adattatore

Troverai tutti gli adattatori di caching forniti da OpenCart sotto il Sistema \ Libreria \ Cache directory. Il nostro adattatore personalizzato deve andare anche lì, quindi creiamo un file Sistema \ Libreria \ Cache \ database.php con i seguenti contenuti.

scadenza = $ scadenza; $ This-> initDbInstance ();  / ** * Metodo di supporto per creare un'istanza DB * / funzione privata initDbInstance () if (is_null (statico :: $ _ db)) statico :: $ _ db = new \ DB (DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE , DB_PORT);  / ** * Recupera il valore memorizzato nella cache con la chiave * * @param string $ key Cache Key * * @return mixed Valore della chiave di cache se trovato, boolean false altrimenti * / public function get ($ key) $ query = statico :: $ _ db-> query ("SELECT * FROM '". DB_PREFIX. "dbcache' WHERE 'key' = '". $ key. "' AND 'expire'> = '". time (). "' "); if ($ query-> num_rows) return unserialize ($ query-> row ['value']);  return false;  / ** * Imposta il valore della cache con il tasto * * @param string $ key Cache Key * @param mixed $ valore Cache value * / public function set ($ key, $ value) $ this-> delete ($ key) ; static :: $ _ db-> query ("INSERT INTO". DB_PREFIX. "dbcache SET 'key' = '". $ key. "', 'value' = '". mysql_escape_string (serialize ($ value)). "' , 'expire' = '". (time () + $ this-> expire)."' ");  / ** * Elimina il valore memorizzato nella cache con il tasto * * @param string $ key Cache Key * / public function delete ($ key) statico :: $ _ db-> query ("DELETE FROM". DB_PREFIX. "Dbcache DOVE 'chiave' = '". $ Chiave."' "); 

Secondo le convenzioni, la classe Banca dati è definito sotto il nascondiglio namespace. Ci sono due proprietà, $ _db e $ scadere$ _db detiene l'istanza del database e $ scadere è impostato su cache lifetime quando la classe viene istanziata. La ragione alla base della dichiarazione del $ _db la proprietà statica è l'oggetto singleton che contiene.

Nel costruttore della classe, stiamo assegnando il tempo di caching passato dal framework OpenCart al $ scadere proprietà e chiamando il initDbInstance metodo definito nella stessa classe che crea e assegna un'istanza di database a $ _db se non esiste già.

Quindi, il ottenere metodo è usato per recuperare una voce della cache per chiave e scadenza, e il impostato il metodo viene utilizzato per inserire una nuova voce di cache nel database. Inoltre, stiamo serializzando i dati della cache nel impostato metodo per assicurarsi che sia memorizzato correttamente. Certo, abbiamo bisogno di unserializzare nel ottenere metodo prima di restituirlo effettivamente!

Infine, c'è un Elimina metodo che cancella una voce dal database. È interessante notare qui che il metodo set chiama il metodo delete ogni volta per assicurarsi che non finiamo per creare voci di cache duplicate!

Quindi, è tutto ciò che riguarda l'installazione del nostro file di configurazione del caching personalizzato. Nella prossima sezione vedremo come collegarlo al core framework OpenCart.

Collega il nostro adattatore per caching personalizzato

Sfortunatamente, non esiste una configurazione di back-end che ti permetta di collegare il tuo adattatore per la cache personalizzato. Quindi, per il bene di questo tutorial, andremo avanti e influenzeremo direttamente il modo in cui viene gestito nel nucleo.

Vai avanti e apri index.php sotto la radice del documento del tuo sito.

Trova il seguente frammento.

$ cache = new Cache ('file');

Sostituirlo con:

$ cache = new Cache (database ');

Quindi, come puoi vedere, abbiamo appena modificato l'argomento, o meglio il nome dell'adattatore, che è passato durante la creazione di un nuovo $ di cache oggetto.

Allo stesso modo, fallo per il index.php file che risiede sotto il Admin directory. Garantisce che sia il front-end che il back-end utilizzano il nostro adattatore per il caching personalizzato.

Hai quasi finito! Vai avanti e visita un paio di pagine nel front-end e nel back-end, e dovresti vedere che il dbcache La tabella MySQL viene riempita con nuovi record!

In questo modo, è possibile procedere e creare un adattatore di memorizzazione nella cache per altri motori di archiviazione. Anche se l'abbiamo dimostrato in un modo semplice, penso che sia il concetto che conta di più per il tuo prossimo adattatore personalizzato!

Conclusione

Come sempre, se stai cercando altri strumenti, utility, estensioni e così via che puoi sfruttare nei tuoi progetti o per la tua istruzione, non dimenticare di vedere cosa abbiamo a disposizione sul mercato.

Oggi abbiamo discusso su come creare un adattatore per la cache personalizzato in OpenCart. L'adattatore di memorizzazione nella cache del database è stato creato nel processo per la dimostrazione. Sentiti libero di pubblicare le tue domande usando il feed qui sotto!