Înțelegerea memoriei cache în OpenCart

În prezent, nu vă puteți permite să vă deconectați chiar și pentru câteva minute dacă aveți de-a face cu o audiență globală, deoarece oferă concurentului dvs. șansa de a dovedi că este înaintea dvs..

Caching-ul este un factor important dacă aveți de-a face cu dezvoltarea web-ului. Este într-adevăr ajuta la descărcarea de ridicare grele un server web trebuie să facă pentru a servi mii de cereri, dacă nu milioane de concomitent. Există o mulțime de opțiuni disponibile în zilele noastre care oferă un impuls de performanță pentru aplicația dvs. web, dar concept de bază de caching rămâne același.

Scopul cache-ului

Au dispărut zilele în care aveați nevoie să construiți un site Web HTML static care conținea câteva pagini și ați fost terminat. În acest caz, nu a trebuit să vă faceți griji cu privire la solicitările concurente și la traficul greu generat pe site-ul dvs., deoarece este mult mai rapid să trimiteți aceste pagini statice HTML în comparație cu paginile web dinamice care necesită destul resurse de server pentru a construi înșiși.

O pagină dinamică tipică face foarte mult, de la interogarea unei baze de date la preluarea datelor de la furnizorii de servicii terți. Este nevoie de o mulțime de afișare a unei pagini care include o mulțime de informații în diferite formate. În mod specific, nu vă puteți permite să solicitați ca baza de date să preia aceleași informații complexe pentru fiecare solicitare, pe măsură ce crește traficul. În curând serverele vor fi înghesuite pentru resurse, iar înainte de a putea face ceva, ele vor dispărea!

Deci, ai nevoie de ceva înăuntru, care să accelereze lucrurile, și asta e situația în care caching-ul intră în imagine. Ideea de caching este foarte simplă - stocați rezultatele calculate / formate undeva și le aduceți atunci când este necesar, astfel încât să nu mai trebuie să o faceți din nou. Că "undeva" ar putea fi oriunde: sistemul de fișiere, memoria sau baza de date în sine.

De asemenea, există multe opțiuni disponibile pentru caching-memcached, Redis, Varnish și multe altele. Puteți utiliza acelea ca pe cerințele dvs. și, uneori, combinația de componente multiple ajută la îmbunătățirea performanței exponențial.

Așa cum ar fi nevoie de o serie completă pentru a explica intrările și ieșirile din caching, și de asemenea, este ceva care nu face parte din acest articol, vom reveni la contextul OpenCart și vom continua cu acesta în următoarea secțiune.

Vom folosi cea mai recentă versiune de OpenCart, așa că asigurați-vă că ați instalat-o ca să urmați codul.

Cum funcționează Cache-ul de bază în OpenCart

Biblioteca de caching este furnizată în nucleul propriu-zis, deci hai să o explorăm imediat. Mergeți și deschideți Sistem / bibliotecă / cache.php fișier în editorul dvs. de text preferat.

cache = noua clasă $ (expiră);  altceva exit ('Eroare: Nu s-ar putea încărca driverul cache' $ driver. 'cache!');  funcția publică obține (cheia $) return $ this-> cache-> get (cheia $);  set de funcții publice ($ key, $ value) retur $ this-> cache-> set ($ key, $ value);  funcția publică șterge (cheia $) return $ this-> cache-> delete (cheia $); 

Începând cu constructor, inițializează driverul de cache trecut în argumentul constructorului. Dacă clasa este disponibilă pentru adaptorul de cache solicitat, acesta va fi inițializat la $ This-> cache proprietate, altfel va ieși cu mesajul de eroare. Vom vedea adaptoarele cache diferite în secțiunea următoare.

De asemenea, există trei funcții de împachetare care sunt folosite pentru a efectua toate operațiile legate de cache.

obține metoda este folosită pentru a extrage valoarea din memoria cache.

$ This-> cache-> get (tasta $);

a stabilit metoda este folosită pentru a stoca valoarea în memoria cache.

$ this-> cache-> set (cheia $, valoarea $);

șterge metoda este folosită pentru a șterge maparea cheie / valoare din memoria cache.

$ This-> cache-> șterge (tasta $);

Este foarte simplu să utilizați și funcțiile de cache în modulele dvs..

Există o mulțime de locuri în partea frontală unde datele sunt extrase din memoria cache. Să enumerăm câteva dintre ele:

  • produse noi
  • produse bestseller
  • lista producătorilor
  • lista de țări
  • lista de valute
  • lista zonelor
  • setările magazinului

În cazul memorării în cache a fișierelor, veți găsi toate fișierele cache stocate sub Sistem / cache director. Deși OpenCart șterge cache-ul la evenimente adecvate, puteți șterge manual aceste fișiere pentru a prelua cele mai recente date.

Deci, asta e în ceea ce privește învelișul de cache. În următoarea secțiune, vom vedea diferiți adaptori de cache disponibili în miez și rețeaua de ridicare reală pe care o efectuează.

Adaptoare cache

Există trei adaptoare de caching disponibile în nucleul fișierului OpenCart, memcache și apc. Adaptorul cache implicit folosit în OpenCart este fișier.

Iată fragmentul de la index.php care inițializează $ cache obiect cu adaptorul cache implicit.

// Cache $ cache = Cache nou ("fișier"); $ registry-> set ('cache', $ cache);

Din nefericire, nu există nici o modalitate configurabilă care să vă permită să comutați adaptorul de cache, deoarece acesta este codat greu. Cu toate acestea, ați putea folosi OCMOD pentru a schimba adaptorul cache implicit fără a modifica fișierul de bază.

Deoarece implementarea fiecărui adaptor de caching este aproape identică, vom examina doar unul dintre adaptorii de cache pentru a vedea ce se întâmplă. Să luăm memcache, de exemplu. Du-te și deschide-te sistem / biblioteca / cache / mem.php. De asemenea, ați putea explora celelalte două adaptoare file.php și apc.php în același director.

expire = $ expiră; $ this-> cache = new \ Memcache (); $ this-> cache-> pconnect (CACHE_HOSTNAME, CACHE_PORT);  funcția publică get (cheia $) return $ this-> cache-> get (CACHE_PREFIX. cheie);  set de funcții publice ($ key, $ value) retur $ this-> cache-> set (CACHE_PREFIX. $ cheie, valoare $, MEMCACHE_COMPRESSED, $ this-> expire);  funcția publică șterge (cheia $) $ this-> cache-> delete (CACHE_PREFIX. cheie); 

Fiecare adaptor de caching este definit în spațiul de nume "Cache" pentru a evita conflictele.

Amintiți-vă acele metode pe care le-am discutat în ultima secțiune - de fapt se încheie aici. Deci, când apelați obține metodă în ascunzătoare clasa, de fapt, o numește obține metoda definită în clasa actuală a adaptorului - în cazul nostru este Mem clasă.

Logica reală a manipulării intrărilor în memoria cache se întâmplă în metodele din clasa adaptoare. După cum puteți vedea, în constructorul Mem am inițializat obiectul Memcache și am stabilit conexiunea folosind pconnect metodă. În cele din urmă, folosim metodele de obținere, setare și ștergere a obiectului Memcache pentru a manipula intrările din memoria cache.

Pe de altă parte, dacă analizați implementarea dispozitivului de gestionare a cache-ului de stocare a fișierelor, este nevoie de puțin efort pentru a stoca și a prelua înregistrările de memorie cache utilizând funcțiile sistemului de fișiere. În afară de aceasta, nu există nici o diferență în implementare.

Deci, este vorba despre adaptoarele de caching în OpenCart. Bineînțeles, puteți continua și creați propriul dvs. personalizator de cache, dacă este necesar. Trebuie doar să implementați metodele necesare și ați terminat.

Asta e pentru ziua de azi. Sper că v-ați bucurat de tutorial și că vă va încuraja să utilizați cache-ul în modulele personalizate după cum este necesar.

Concluzie

Astăzi, am discutat despre caching în OpenCart. Am inceput cu elementele de baza ale caching-ului si, pe masura ce ne-am mutat, am explorat modul in care caching-ul este folosit in front-end. În cele din urmă, am trecut prin adaptoarele cache diferite disponibile în OpenCart.

Simțiți-vă liber să vă exprimați gândurile sub formă de interogări și sugestii utilizând feedul de mai jos.

Cod