Configurați Caching în PHP Cu Componenta Cache Symfony

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 cache Symfony

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ă:

  • adaptor de bază de date
  • sistem adaptor de fișiere
  • adaptor memcached
  • Redenumiți adaptorul
  • Adaptor APCu
  • și altele

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.

Instalare și configurare

Î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.

Un exemplu în lumea reală

Î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.

Creați Pool Cache

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:

  • spațiul de nume în care doriți să creați intrări în cache 
  • o viață în secunde pentru elementele cache
  • directorul în care va fi stocat memoria cache.

Cum se păstrează valorile de coarde

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ă ();

Cum se păstrează valorile matricei

Î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.

Cum se stabilește o dată de expirare pentru elementele memorate în 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ă!

Concluzie

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.

Cod