Idag visar jag dig Symfony Cache-komponenten, ett enkelt sätt att lägga till caching i dina PHP-applikationer. Detta bidrar till att förbättra den totala prestandan för din ansökan genom att minska sidbelastningstiden.
Symfony Cache-komponenten låter dig konfigurera caching i dina PHP-applikationer. Komponenten själv är väldigt lätt att installera och konfigurera och låter dig komma igång snabbt. Det ger också en mängd olika adaptrar att välja mellan, som visas i följande lista:
När det gäller cachning med hjälp av Symfony Cache-komponenten finns det ett par villkor som du ska bli bekant med.
Till att börja med, cache-objekt avser innehållet som lagras. Varje objekt lagras som en nyckelvärdespar. Cache-objekten hanteras av cachepool, vilka grupper dem logiskt. Faktum är att du måste använda cachemassan för att manipulera cachervärden. Slutligen är det cache-adapter vilket gör alla tunga lyft för att lagra föremål i cache back-end.
I den här artikeln undersöker vi hur du kan frigöra kraften i Symfony Cache-komponenten. Som vanligt börjar vi med installation och konfiguration, och sedan fortsätter vi att utforska några verkliga exempel i den senare halvan av artikeln.
I det här avsnittet kommer vi att installera Cache-komponenten. Jag antar att du redan har installerat Composer i ditt system - du behöver det för att installera Cache-komponenten tillgänglig på Packagist.
När du har installerat Kompositör, fortsätt och installera Cachekomponenten med följande kommando.
$ komponent kräver symfoni / cache
Det borde ha skapat en composer.json fil som ska se ut så här:
"kräver": "symfony / cache": "^ 4.1"
Det är det för installation, men hur ska du lägga till den i din ansökan? Det handlar bara om att inkludera autoload.php fil skapad av kompositören i din ansökan, som visas i följande kod.
I det här avsnittet går vi igenom ett exempel som visar hur du kan använda cachekomponenten i dina program för att cachera innehåll.
Till att börja med, låt oss gå vidare och skapa index.php fil med följande innehåll.
getItem ( 'demo_string'); om (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ CachePool-> Spara ($ demoString); om ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); eko "\ n"; // radera alla objekt $ cachePool-> clear (); om (! $ cachePool-> hasItem ('demo_string')) echo "Cache entry demo_string har tagits bort! \ n"; // 2. lagra arrayvärden $ demoOne = $ cachePool-> getItem ('demo_array'); om (! $ demoOne-> isHit ()) $ demoOne-> set (array ("one", "two", "three")); $ CachePool-> Spara ($ demoOne); om ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); eko "\ n"; // radera specifikt objekt $ cachePool-> deleteItem ('demo_array'); om (! $ cachePool-> hasItem ('demo_array')) echo "Cache-posten demo_array har tagits bort! \ n"; // 3. Ställ utgången på objekt $ foo = $ cachePool-> getItem ('foo'); om (! $ foo-> isHit ()) $ foo-> set ('bar'); $ Foo-> expiresAfter (30); $ CachePool-> Spara ($ foo); om ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); eko "\ n"; sömn (60); om ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); eko "\ n"; annat echo "Cache-objektet löpte ut! \ n";
Låt oss gå igenom huvuddelarna av index.php fil för att förstå deras syfte.
Som vi diskuterade tidigare lagras cachade objekt i en cache-pool. Dessutom stöds varje cachepool av ett specifikt cacheback-end och adapter. Om du vill lagra objekt i filsystemets cache, måste du till exempel initiera cachepoolen för filsystemadaptern.
$ cachePool = ny FilesystemAdapter (", 0," cache));
Du kan ge tre valfria argument till FilesystemAdapter
objekt:
Eftersom vi redan har skapat cachepoolen kan vi använda den för att lagra cache-objekt.
För det första använder vi getItem
Metod för att hämta cache-objektet med demo_string
nyckel. Därefter använder vi isHit
Metod för att kontrollera om värdet vi söker redan finns i cachen $ demoString
.
$ demoString = $ cachePool-> getItem ('demo_string'); om (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ CachePool-> Spara ($ demoString);
Eftersom det här är första gången hämtar vi demo_string
cache-objekt, isHit
Metoden bör återvända falsk
. Därefter använder vi uppsättning
metod för $ demoString
objekta att ställa in cachervärdet. Slutligen räddar vi $ demoString
cache objekt i $ cachePool
cachepool med hjälp av spara
metod.
Nu när vi har sparat objektet i cachen, låt oss se hur du hämtar det från cacheminnet.
om ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); eko "\ n";
Här använder vi hasItem
Metod för att kontrollera förekomsten av cachepunktet i cachepoolen innan du hämtar det.
Låt oss sedan se hur du tar bort alla cache-objekt från cachepoolen:
$ CachePool-> clear ();
I det föregående avsnittet diskuterade vi hur du lagrar grundläggande värden i cachepoolen. Lagring av array-värden är ungefär densamma som du kan se i följande exempel.
$ demoOne = $ cachePool-> getItem ('demo_array'); om (! $ demoOne-> isHit ()) $ demoOne-> set (array ("one", "two", "three")); $ CachePool-> Spara ($ demoOne); om ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); eko "\ n";
Som du kan se kan vi helt enkelt ställa in cache-objektet med ett array värde, precis som vi gjorde för en sträng.
Låt oss sedan se hur du tar bort det specifika cache-objektet från cachepoolen.
$ CachePool-> DeleteItem (demo_array ');
Här använder vi radera sak
metod för att radera demo_array
objekt från cachepoolen.
Hittills har vi cachade objekt i poolen utan utgångsdatum. Men du vill inte normalt lagra objekt i cacheminnet permanent. Du kan till exempel uppdatera cachematerial regelbundet, så du behöver en mekanism som rensar utgått cache-objekt.
I det här avsnittet diskuterar vi hur du lagrar objekt i cachen tillsammans med ett utgångsdatum.
$ foo = $ cachePool-> getItem ('foo'); om (! $ foo-> isHit ()) $ foo-> set ('bar'); $ Foo-> expiresAfter (30); $ CachePool-> Spara ($ foo);
Som du kan se i ovanstående kod, kan du använda expiresAfter
Metod för att ange ett utgångsdatum för det cachade objektet. Du kan skicka det antal sekunder som du vill cache ett objekt för i första argumentet av expiresAfter
metod.
I vårt exempel använder vi sova
Metod för att testa om det cachade objektet fortfarande finns tillgängligt i cachepoolen.
om ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); eko "\ n"; sömn (60); om ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); eko "\ n"; annat echo "Cache-objektet löpte ut! \ n";
Fortsätt och testa det för att se hur det fungerar!
Idag har vi en kort titt på Symfony Cache-komponenten, där du kan konfigurera caching i dina PHP-applikationer. Den stöder också en mängd olika cache-adaptrar som tillsammans ger dig flexibiliteten att välja vilken typ av back-end du vill använda.
Gärna uttrycka dina tankar och frågor med hjälp av formuläret nedan.