Astăzi, vă voi arăta componenta Symfony Cache, o modalitate ușoară de a adăuga cache-ul în aplicațiile dvs. PHP. Acest lucru vă ajută să îmbunătățiți performanța generală a aplicației, reducând timpul de încărcare a paginii.
Componenta Symfony Cache vă permite să configurați cache-ul în aplicațiile dvs. PHP. Componenta în sine este foarte ușor de instalat și configurat și vă permite să începeți rapid. De asemenea, oferă o varietate de adaptoare pentru a alege, după cum se arată în următoarea listă:
Când vine vorba de cache utilizând componenta Symfony Cache, există câțiva termeni cu care ar trebui să vă familiarizați.
Pentru început, cache element se referă la conținutul stocat. Fiecare element este stocat ca pereche cheie-valoare. Elementele cache sunt gestionate de către cache pool, care le grupează logic. De fapt, trebuie să utilizați piscina cache pentru a manipula valorile cache-ului. În cele din urmă, este adaptorul cache care face toate lifting grele pentru a stoca articole în cache back-end.
În acest articol, vom explora modul în care puteți dezlănțui puterea componentei Symfony Cache. Ca de obicei, vom începe cu instalarea și configurarea, iar apoi vom continua să explorăm câteva exemple din lumea reală în a doua jumătate a articolului.
În această secțiune, vom instala componenta Cache. Presupun că ați instalat deja Composer în sistemul dvs. - veți avea nevoie de instalarea componentei Cache disponibilă la Packagist.
Odată ce ați instalat Compozitor, continuați și instalați componenta Cache utilizând următoarea comandă.
$ compozitorul necesită symfony / cache
Asta ar fi trebuit să creeze a composer.json fișier care ar trebui să arate astfel:
"necesită": "symfony / cache": "^ 4.1"
Asta e pentru instalare, dar cum ar trebui să-l adăugați la cererea dvs.? Este doar o chestiune de a include autoload.php fișier creat de Compozitor în aplicația dvs., așa cum se arată în fragmentul următor.
În această secțiune, vom trece printr-un exemplu care demonstrează modul în care ați putea utiliza componenta Cache în aplicațiile dvs. pentru a arhiva conținutul.
Pentru început, hai să mergem înainte și să creăm index.php fișier cu următorul conținut.
getItem ( 'demo_string'); dacă (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ CachePool-> Salvați ($ demoString); dacă ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); echo "\ n"; // șterge toate elementele $ cachePool-> clear (); dacă ! $ cachePool-> hasItem ('demo_string')) echo "Demo_string-ul de intrare în memoria cache a fost șters cu succes! \ n"; // 2. stocarea valorilor matrice $ demoOne = $ cachePool-> getItem ('demo_array'); dacă (! $ demoOne-> isHit ()) $ demoOne-> set (array ("unul", "două", "trei")); $ CachePool-> Salvați ($ demoOne); dacă ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); echo "\ n"; // ștergeți un anumit element $ cachePool-> deleteItem ('demo_array'); dacă ! $ cachePool-> hasItem ('demo_array')) echo "Demo_array a fost șters cu succes! \ n"; // 3. set expirare pe elemente $ foo = $ cachePool-> getItem ('foo'); dacă (! $ foo-> isHit ()) $ fo-> set ('bar'); $ Foo-> expiresAfter (30); $ CachePool-> Salvați ($ foo); dacă ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; somn (60); dacă ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ("foo"); echo $ foo-> get (); echo "\ n"; altceva echo "Elementul cache a expirat! \ n";
Să trecem prin părțile principale ale index.php fișier pentru a înțelege scopul lor.
După cum am discutat mai devreme, elementele memorate în cache sunt stocate într-un pool de cache. În plus, fiecare grup de memorie cache este susținut de un back-end și de un adaptor specific pentru cache. Dacă doriți să stocați elemente în memoria cache a sistemului de fișiere, de exemplu, trebuie să inițializați cache-ul cache al adaptorului sistemului de fișiere.
$ cachePool = sistem de fișiere noi (", 0," cache ");
Puteți oferi trei argumente opționale pentru FilesystemAdapter
obiect:
Deoarece am creat deja fondul de memorie cache, îl putem folosi pentru a stoca elementele cache.
În primul rând, folosim getItem
pentru a prelua elementul cache cu demo_string
cheie. Apoi, folosim isHit
pentru a verifica dacă valoarea pe care o căutăm este deja prezentă în elementul cache $ demoString
.
$ demoString = $ cachePool-> getItem ("demo_string"); dacă (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ CachePool-> Salvați ($ demoString);
Deoarece aceasta este prima dată când preluăm demo_string
elementul cache, isHit
metoda ar trebui să revină fals
. Apoi, folosim a stabilit
metodă a $ demoString
obiect pentru a seta valoarea cache. În cele din urmă, salvăm $ demoString
cache element în $ cachePool
cache pool folosind Salvați
metodă.
Acum, că am stocat elementul în memoria cache, să vedem cum să îl scoatem din memoria cache.
dacă ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); echo "\ n";
Aici, folosim hasItem
pentru a verifica existența elementului cache în cache-ul cache înainte de a-l recupera.
Apoi, să vedem cum să ștergem toate elementele memorate în memoria cache din cache:
$ CachePool-> clară ();
În secțiunea anterioară, am discutat cum să stocăm valorile de bază în memoria cache. Stocarea valorilor matricei este la fel, după cum puteți vedea în exemplul următor.
$ demoOne = $ cachePool-> getItem ("demo_array"); dacă (! $ demoOne-> isHit ()) $ demoOne-> set (array ("unul", "două", "trei")); $ CachePool-> Salvați ($ demoOne); dacă ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); echo "\ n";
După cum puteți vedea, putem seta pur și simplu elementul cache cu o valoare de matrice, exact la fel ca în cazul unui șir.
Apoi, să vedem cum să ștergem articolul din memoria cache din memoria cache.
$ CachePool-> deleteItem ( 'demo_array');
Aici, folosim Sterge articolul
- metoda de ștergere demo_array
element din memoria cache.
Până acum, am stocat articole în piscină fără o dată de expirare. Cu toate acestea, de obicei, nu doriți să stocați permanent obiectele din cache. De exemplu, este posibil să doriți să actualizați periodic articolele de memorie cache, prin urmare, aveți nevoie de un mecanism care să elimine elemente de memorie cache expirate.
În această secțiune, vom discuta cum să stocăm articolele în memoria cache împreună cu o dată de expirare.
$ foo = $ cachePool-> getItem ("foo"); dacă (! $ foo-> isHit ()) $ fo-> set ('bar'); $ Foo-> expiresAfter (30); $ CachePool-> Salvați ($ foo);
După cum puteți vedea în fragmentul de mai sus, puteți utiliza expiresAfter
pentru a seta o dată de expirare pentru elementul stocat în memorie. Puteți trece numărul de secunde în care doriți să stocați un cache într-un element în primul argument al lui expiresAfter
metodă.
În exemplul nostru, folosim dormi
pentru a testa dacă elementul stocat în cache este încă disponibil în grupul de cache.
dacă ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ("foo"); echo $ foo-> get (); echo "\ n"; somn (60); dacă ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ("foo"); echo $ foo-> get (); echo "\ n"; altceva echo "Elementul cache a expirat! \ n";
Continuați și testați-l pentru a vedea cum funcționează!
Astăzi, am avut o scurtă privire la componenta Symfony Cache, care vă permite să configurați cache-ul în aplicațiile dvs. PHP. De asemenea, suportă o varietate de adaptoare cache care împreună vă oferă flexibilitatea de a alege tipul de back-end pe care doriți să îl utilizați.
Simțiți-vă liber să vă exprimați gândurile și întrebările utilizând formularul de mai jos.