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-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:
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.
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.
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.
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:
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 ();
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.
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!
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.