Creați un adaptor personalizat pentru cache în OpenCart

Indiferent de cadrul web cu care lucrați, caching-ul este un instrument important de a avea în kitty pentru a îmbunătăți performanța generală a site-ului dvs. Aveți la dispoziție diferite mecanisme de memorare a cache-ului, cum ar fi fișierul, APC, Memcached și multe altele. Puteți decide pe baza cerințelor dvs. și, uneori, este nevoie de o combinație de mai mult de un adaptor pentru a justifica rezultatul dorit.

OpenCart include deja o pereche de adaptoare de cache în nucleu și acesta este ceea ce oferă un șablon de urmat dacă doriți să creați unul personalizat. Pentru a implementa un adaptor personalizat, trebuie doar să creați metode conform contractului și să includeți logica în fiecare metodă și ați terminat! Acesta va fi preluat automat ca parte a mecanismului de cache OpenCart.

Pentru fiecare adaptor de caching, este doar mecanismul de bază pentru stocarea și preluarea datelor care se schimbă. Același lucru este valabil și pentru adaptorul nostru de caching bazat pe baza de date, de aceea trebuie să creați o schemă personalizată care să dețină datele cache.

Asigurați-vă că ați instalat cea mai recentă versiune de OpenCart înainte de a merge mai departe și de a începe să creați un adaptor personalizat.

Creați o schemă de adaptor

E o dbcache Tabela MySQL care va ține datele noastre de cache. Deci, să o creăm!

CREATE TABLE DACĂ NU EXISTĂ DB_PREFIX dbcache '(' cheie 'varchar (255) NOT NULL,' value 'longblob NOT NULL,' expire 'int (11) NOT NULL) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Lucrul important pe care trebuie să-l notezi aici este prefixul bazei de date; dacă îl utilizați, asigurați-vă că numiți în mod corespunzător tabelul. De exemplu, în cazul prefixului bazei de date oc_, ar trebui să creați un tabel numit oc_dbcache.

În afară de asta, structura tabelului este destul de simplă și deține doar trei coloane - cheie, valoare și expiră. Coloana cheie deține cheia de memorare în cache, coloana valorii deține valoarea asociată, iar coloana expiră menține ștampila de timp UNIX.

Creați un fișier Adaptor

Veți găsi toate adaptoarele de cache furnizate de OpenCart sub sistem \ bibliotecă \ cache director. Adaptorul personalizat trebuie să meargă și acolo, așa că să creăm un fișier sistem \ bibliotecă \ cache \ database.php cu următorul conținut.

expire = $ expiră; $ This-> initDbInstance ();  / ** * Metoda Helper pentru a crea instanța DB * / funcția privată initDbInstance () if (is_null (static :: $ _ db)) static :: $ _db = new \ DB_ DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE , DB_PORT);  / ** * Returnați valoarea stocată în memoria cache prin tasta * * @ param string $ cheia Cache Cheie * * @return amestecat Valoarea cheii cache dacă este găsită, boolean false altfel * / public function get ($ key) $ query = static :: $ _ db-> interogare ("SELECT * FROM" "DB_PREFIX." dbcache "WHERE 'cheie' = ' „); dacă ($ query-> num_rows) returnează neserializează ($ query-> row ['value']);  return false;  / ** * Setați valoarea cache-ului cu tasta * * @ param string $ cheia cache Cheie * @param amestecat valoarea $ Valoarea cache * / setul de funcții publice ($ key, $ value) $ this-> delete ; static :: $ _ db-> interogare ("INSERT INTO". DB_PREFIX. "dbcache SET 'cheie' = ' , 'expire' = '' (timpul () + $ this-> expiră). '' ');  / ** * Ștergeți valoarea stocată în memoria cache prin tasta * * @ param string $ cheia cache * / șterge funcția publică ($ key) static :: $ _ db-> interogare ("DELETE FROM" DB_PREFIX. WHERE "cheie" = "". $ "."); 

Conform convențiilor, clasa Bază de date este definit în ascunzătoare Spațiu de nume. Există două proprietăți, $ _db și $ expiră$ _db deține instanța bazei de date și $ expiră este setat să cache durata de viață atunci când clasa este instanțiată. Motivul din spatele declarării $ _db proprietatea ca statică este obiectul singleton pe care îl deține.

În constructorul clasei, atribuim timpul de cache trecut din cadrul OpenCart la $ expiră de proprietate și de asteptare initDbInstance metoda definită în aceeași clasă care creează și atribuie o instanță de bază de date la $ _db dacă nu există deja.

Apoi, obține metoda este folosită pentru a prelua o intrare în memoria cache la cheie și la expirarea timpului, și a stabilit metoda este folosită pentru a introduce o nouă intrare în memoria cache în baza de date. De asemenea, serializăm datele cache din a stabilit pentru a vă asigura că sunt stocate corespunzător. Bineînțeles, trebuie să ne neserializăm în obține înainte de ao returna!

În cele din urmă, există a șterge care șterge o intrare din baza de date. Este interesant de remarcat aici că metoda setată sună de fiecare dată de la metoda de ștergere pentru a ne asigura că nu ajungem să creați intrări duplicate ale cache-ului!

Deci, asta e în măsura în care este vorba de configurarea personalizată a fișierului adaptorului de caching. În următoarea secțiune, vom vedea cum să le conectăm la cadrul de bază OpenCart.

Conectați adaptorul nostru personalizat de cache

Din păcate, nu există o configurație din back-end care să vă permită să conectați adaptorul personalizat de cache. Deci, de dragul acestui tutorial, vom merge mai departe și vom influența direct modul în care este tratat în nucleu.

Du-te și deschide-te index.php sub rădăcina de document a site-ului dvs..

Găsiți următorul fragment.

$ cache = Cache nou ("fișier");

Înlocuiți-l cu:

$ cache = cache nou (baza de date ');

Deci, după cum puteți vedea, tocmai am schimbat argumentul, sau mai degrabă numele adaptorului, care a trecut atunci când creați un nou $ cache obiect.

În același mod, faceți-o pentru index.php fișier care se află sub admin director. Vă asigură că atât partea front-end cât și back-end-ul utilizează adaptorul nostru personalizat de caching.

Aproape ai terminat! Mergeți mai departe și vizitați câteva pagini în partea front-end și back-end, și ar trebui să vedeți că dbcache Tabelul MySQL este completat cu noi înregistrări!

În acest fel, puteți continua și creați un adaptor de caching pentru alte motoare de stocare. Deși am demonstrat-o într-un mod simplu, cred că este conceptul care contează cel mai mult pentru următorul adaptor personalizat!

Concluzie

Ca întotdeauna, dacă căutați alte instrumente OpenCart, utilitare, extensii și așa mai departe, pe care le puteți utiliza în propriile proiecte sau pentru educația proprie, nu uitați să vedeți ce avem la dispoziție pe piață.

Astăzi, am discutat cum să creați un adaptor personalizat pentru caching în OpenCart. Adaptorul de caching pentru baza de date a fost creat în procesul de demonstrație. Simțiți-vă liber să postați interogările folosind feed-ul de mai jos!

Cod