Konfigurera caching i PHP Med Symfony Cache Component

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 Component

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:

  • databasadapter
  • filsystemadapter
  • memcached adapter
  • Redis adapter
  • APCu-adapter
  • och mer

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.

Installation och konfiguration

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.

Ett verkligt exempel på världen

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.

Skapa cachepoolen

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:

  • Namnrymden där du vill skapa cacheposter 
  • en livstid i sekunder för cache-objekt
  • katalogen där cacheminnet kommer att lagras.

Hur man lagrar strängvärden

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

Så här lagrar du arrayvärden

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.

Så här ställer du in ett utgångsdatum för cachade objekt

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!

Slutsats

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.