Oppsett Caching i PHP Med Symfony Cache Component

I dag vil jeg vise deg Symfony Cache-komponenten, en enkel måte å legge til caching på PHP-applikasjonene dine. Dette bidrar til å forbedre den generelle ytelsen til søknaden din ved å redusere sidenes lastetid.

Symfony Cache Component

Symfony Cache-komponenten lar deg konfigurere caching i PHP-applikasjonene dine. Komponenten selv er veldig enkel å installere og konfigurere og lar deg komme i gang raskt. Det gir også en rekke adaptere å velge mellom, som vist i følgende liste:

  • database adapter
  • filsystemadapter
  • memcached adapter
  • Redis adapter
  • APCu-adapter
  • og mer

Når det gjelder caching ved hjelp av Symfony Cache-komponenten, er det et par vilkår du bør bli kjent med.

Til å begynne med, cache-element refererer til innholdet som er lagret. Hvert element er lagret som et nøkkelverdi-par. Cache-elementene administreres av hurtigbuffer, som grupperer dem logisk. Faktisk må du bruke hurtigbufferen til å manipulere bufferverdier. Endelig er det hurtigbufferadapter som gjør alt tungt løft for å lagre varer i cache back-end.

I denne artikkelen vil vi undersøke hvordan du kan frigjøre strømmen til Symfony Cache-komponenten. Som vanlig begynner vi med installasjon og konfigurasjon, og så fortsetter vi å utforske noen eksempler på virkelige verdener i den siste halvdelen av artikkelen.

Installasjon og konfigurering

I denne delen skal vi installere hurtigbufferkomponenten. Jeg antar at du allerede har installert Composer i systemet ditt - du trenger det for å installere hurtigbufferkomponenten tilgjengelig på Packagist.

Når du har installert Komponist, fortsett og installer hurtigbufferkomponenten ved hjelp av følgende kommando.

$ komponent krever symfoni / cache

Det burde ha skapt en composer.json fil som burde se slik ut:

"krever": "symfony / cache": "^ 4.1"

Det er det for installasjon, men hvordan skal du legge den til din søknad? Det handler bare om å inkludere autoload.php fil opprettet av Komponist i din søknad, som vist i følgende utdrag.

Et eksempel på ekte verden

I dette avsnittet går vi gjennom et eksempel som viser hvordan du kan bruke hurtigbufferkomponenten i programmene dine til å cache innhold.

Til å begynne med, la oss gå videre og opprette index.php fil med følgende innhold.

getItem ( 'demo_string'); hvis (! $ demoString-> isHit ()) $ demoString-> sett ('Hello World!'); $ CachePool-> Lagre ($ demoString);  hvis ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); ekko "\ n";  // slette alle elementer $ cachePool-> clear (); hvis (! $ cachePool-> hasItem ('demo_string')) echo "Cache entry demo_string ble slettet med hell! \ n";  // 2. lagre arrayverdier $ demoOne = $ cachePool-> getItem ('demo_array'); hvis (! $ demoOne-> isHit ()) $ demoOne-> sett (array ("en", "to", "tre")); $ CachePool-> Lagre ($ demoOne);  hvis ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); ekko "\ n";  // slette spesifikt element $ cachePool-> deleteItem ('demo_array'); hvis (! $ cachePool-> hasItem ('demo_array')) echo "Cache-oppføringen demo_array ble slettet med hell! \ n";  // 3. angi utløp på elementer $ foo = $ cachePool-> getItem ('foo'); hvis (! $ foo-> isHit ()) $ foo-> sett ('bar'); $ Foo-> expiresAfter (30); $ CachePool-> Lagre ($ foo);  hvis ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); ekko $ foo-> get (); ekko "\ n";  sove (60); hvis ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); ekko $ foo-> get (); ekko "\ n";  annet echo "cache-elementet ble utløpt! \ n"; 

La oss gå gjennom hoveddelene av index.php fil for å forstå deres formål.

Opprett hurtigbufferen

Som vi diskuterte tidligere, lagres hurtigbufrede elementer i et hurtigbufferbasseng. Videre støttes hvert hurtigbufferbasseng av en bestemt hurtigbuffer og adapter. Hvis du vil lagre elementer i filsystemet cachen, for eksempel, må du initialisere hurtigbufferen til filsystemadapteren.

$ cachePool = ny FilesystemAdapter (", 0," cache ");

Du kan gi tre valgfrie argumenter til FilesystemAdapter gjenstand:

  • Navneområdet der du vil lage cacheoppføringer 
  • En levetid på sekunder for cache-elementer
  • katalogen der hurtigbufferen skal lagres.

Slik lagrer du strengverdier

Siden vi allerede har opprettet hurtigbufferbassenget, kan vi bruke den til å lagre cache-elementer.

For det første bruker vi getItem Metode for å hente cache-elementet med demo_string nøkkel. Deretter bruker vi isHit Metode for å sjekke om verdien vi leter etter allerede er tilstede i cache-elementet $ demoString.

$ demoString = $ cachePool-> getItem ('demo_string'); hvis (! $ demoString-> isHit ()) $ demoString-> sett ('Hello World!'); $ CachePool-> Lagre ($ demoString); 

Siden dette er første gang vi henter demo_string cache-element, isHit metoden skal returnere falsk. Deretter bruker vi sett metode av $ demoString motsette seg å angi bufferens verdi. Endelig lagrer vi $ demoString cache element i $ cachePool hurtigbuffer ved hjelp av lagre metode.

Nå som vi har lagret varen i hurtigbufferen, kan vi se hvordan du henter den fra hurtigbufferen.

hvis ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); ekko "\ n"; 

Her bruker vi hasItem metode for å sjekke eksistensen av cache-elementet i hurtigbufferen før du henter det. 

Deretter ser vi hvordan du sletter alle hurtigbufferelementer fra hurtigbufferbassenget:

$ CachePool-> klart ();

Slik lagrer du arrayverdier

I den forrige delen diskuterte vi hvordan du lagrer grunnverdier i hurtigbufferen. Lagring av arrayverdier er omtrent det samme, som du kan se i følgende eksempel.

$ demoOne = $ cachePool-> getItem ('demo_array'); hvis (! $ demoOne-> isHit ()) $ demoOne-> sett (array ("en", "to", "tre")); $ CachePool-> Lagre ($ demoOne);  hvis ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); ekko "\ n"; 

Som du kan se, kan vi ganske enkelt angi cache-elementet med en matriseverdi, akkurat som vi gjorde for en streng. 

Deretter kan vi se hvordan du sletter det spesifikke cache-elementet fra hurtigbufferen.

$ CachePool-> DeleteItem ( 'demo_array');

Her bruker vi DeleteItem metode for å slette demo_array element fra hurtigbufferen.

Slik angir du en utløpsdato for bufrete elementer

Så langt har vi lagret varer i bassenget uten en utløpsdato. Du vil imidlertid ikke vanligvis lagre elementer i hurtigbufferen permanent. For eksempel kan du gjerne oppdatere bufferobjekter periodisk, slik at du trenger en mekanisme som fjerner utgåtte hurtigbufferelementer.

I denne delen diskuterer vi hvordan du lagrer varer i hurtigbufferen sammen med en utløpsdato.

$ foo = $ cachePool-> getItem ('foo'); hvis (! $ foo-> isHit ()) $ foo-> sett ('bar'); $ Foo-> expiresAfter (30); $ CachePool-> Lagre ($ foo); 

Som du kan se i koden ovenfor, kan du bruke expiresAfter Metode for å angi en utløpsdato for det hurtigbufrede elementet. Du kan passere antall sekunder du vil cache et element for i det første argumentet til expiresAfter metode.

I vårt eksempel bruker vi sove metode for å teste om det hurtigbufrede elementet fortsatt er tilgjengelig i hurtigbufferen.

hvis ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); ekko $ foo-> get (); ekko "\ n";  sove (60); hvis ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); ekko $ foo-> get (); ekko "\ n";  annet echo "cache-elementet ble utløpt! \ n"; 

Gå videre og test det for å se hvordan det fungerer!

Konklusjon

I dag har vi en kort titt på Symfony Cache-komponenten, som lar deg sette opp caching i PHP-applikasjonene. Den støtter også en rekke caching-adaptere som sammen gir deg fleksibiliteten til å velge hvilken type back-end du vil bruke.

Ta gjerne uttrykk for dine tanker og spørsmål ved hjelp av skjemaet nedenfor.