Vandaag laat ik je de Symfony Cache-component zien, een eenvoudige manier om caching toe te voegen aan je PHP-applicaties. Dit helpt de algemene prestaties van uw toepassing te verbeteren door de laadtijd van de pagina te verminderen.
Met de Symfony Cache-component kunt u caching instellen in uw PHP-applicaties. Het onderdeel zelf is zeer eenvoudig te installeren en configureren en stelt u in staat snel aan de slag te gaan. Ook biedt het een verscheidenheid aan adapters om uit te kiezen, zoals weergegeven in de volgende lijst:
Als het gaat om caching met de Symfony Cache-component, zijn er een aantal termen waarmee u vertrouwd moet raken.
Om te beginnen, de cache-item verwijst naar de inhoud die is opgeslagen. Elk item wordt opgeslagen als een sleutel / waarde-paar. De cache-items worden beheerd door de cache pool, waardoor ze logisch worden gegroepeerd. In feite moet u de cache pool gebruiken om cachewaarden te manipuleren. Eindelijk is het de cache-adapter die al het zware opheffen doet om items op te slaan in de cache back-end.
In dit artikel zullen we onderzoeken hoe u de kracht van de Symfony Cache-component kunt ontketenen. Zoals gewoonlijk starten we met de installatie en configuratie, waarna we enkele praktijkvoorbeelden in de tweede helft van het artikel gaan bekijken..
In deze sectie gaan we de Cache-component installeren. Ik neem aan dat u Composer al in uw systeem hebt geïnstalleerd. U hebt dit nodig om de beschikbare Cache-component bij Packagist te installeren.
Nadat u Composer hebt geïnstalleerd, gaat u door en installeert u de Cache-component met behulp van de volgende opdracht.
$ composer vereist symfony / cache
Dat had een moeten creëren composer.json bestand dat er als volgt uit moet zien:
"require": "symfony / cache": "^ 4.1"
Dat is het voor de installatie, maar hoe zou u het aan uw toepassing moeten toevoegen? Het is gewoon een kwestie van het opnemen van de autoload.php bestand gemaakt door Composer in uw toepassing, zoals getoond in het volgende fragment.
In deze sectie zullen we een voorbeeld bespreken dat laat zien hoe u de Cache-component in uw toepassingen zou kunnen gebruiken om inhoud in de cache op te slaan.
Om te beginnen, laten we doorgaan en het maken index.php bestand met de volgende inhoud.
getItem (demo_string); if (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ CachePool-> save ($ demoString); if ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); echo "\ n"; // verwijder alle items $ cachePool-> clear (); if (! $ cachePool-> hasItem ('demo_string')) echo "De cache-invoer demo_string is succesvol verwijderd! \ n"; // 2. opslagarraywaarden $ demoOne = $ cachePool-> getItem ('demo_array'); if (! $ demoOne-> isHit ()) $ demoOne-> set (array ("one", "two", "three")); $ CachePool-> save ($ demoOne); if ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); echo "\ n"; // verwijder specifiek item $ cachePool-> deleteItem ('demo_array'); if (! $ cachePool-> hasItem ('demo_array')) echo "De democode demo_array is succesvol verwijderd! \ n"; // 3. stel verloop in op items $ foo = $ cachePool-> getItem ('foo'); if (! $ foo-> isHit ()) $ foo-> set ('bar'); $ Foo-> expiresAfter (30); $ CachePool-> save ($ foo); if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; slaap (60); if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; else echo "Cache-item is verlopen! \ n";
Laten we door de hoofdonderdelen van de index.php bestand om hun doel te begrijpen.
Zoals we eerder hebben besproken, worden items in de cache opgeslagen in een cachepool. Verder wordt elke cache pool ondersteund door een specifieke cache back-end en adapter. Als u bijvoorbeeld items in de bestandssysteemcache wilt opslaan, moet u de cachepool van de bestandssysteemadapter initialiseren.
$ cachePool = new FilesystemAdapter (", 0," cache ");
U kunt drie optionele argumenten opgeven voor de FilesystemAdapter
voorwerp:
Omdat we de cache pool al hebben gemaakt, kunnen we deze gebruiken om cache-items op te slaan.
Ten eerste gebruiken we de getItem
methode om het cache-item op te halen met de demo_string
sleutel. Vervolgens gebruiken we de isHit
methode om te controleren of de waarde waarnaar we op zoek zijn al in het cache-item aanwezig is $ demoString
.
$ demoString = $ cachePool-> getItem ('demo_string'); if (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ CachePool-> save ($ demoString);
Omdat dit de eerste keer is dat we de demo_string
cache item, de isHit
methode zou moeten terugkeren vals
. Vervolgens gebruiken we de reeks
methode van de $ demoString
object om de cachewaarde in te stellen. Ten slotte besparen we het $ demoString
cache item in de $ cachePool
cache pool met behulp van de opslaan
methode.
Nu we het item in de cache hebben opgeslagen, kunnen we zien hoe we het in de cache kunnen ophalen.
if ($ cachePool-> hasItem ('demo_string')) $ demoString = $ cachePool-> getItem ('demo_string'); echo $ demoString-> get (); echo "\ n";
Hier gebruiken we de hasItem
methode om het bestaan van het cache-item in de cache pool te controleren voordat het wordt opgehaald.
Laten we nu eens kijken hoe we alle cache-items uit de cachepool kunnen verwijderen:
$ CachePool-> clear ();
In het vorige gedeelte hebben we besproken hoe basiswaarden in de cache pool kunnen worden opgeslagen. Het opslaan van matrixwaarden is vrijwel hetzelfde, zoals u in het volgende voorbeeld kunt zien.
$ demoOne = $ cachePool-> getItem ('demo_array'); if (! $ demoOne-> isHit ()) $ demoOne-> set (array ("one", "two", "three")); $ CachePool-> save ($ demoOne); if ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); echo "\ n";
Zoals je ziet, kunnen we het cache-item eenvoudig instellen met een arraywaarde, precies hetzelfde als voor een string.
Laten we vervolgens eens kijken hoe we het specifieke cache-item uit de cachepool kunnen verwijderen.
$ CachePool-> DeleteItem ( 'demo_array');
Hier gebruiken we de Verwijder item
methode om de te verwijderen demo_array
item uit de cache pool.
Tot nu toe hebben we items in het zwembad opgeslagen zonder een vervaldatum. U wilt echter niet altijd items in de cache permanent opslaan. U wilt bijvoorbeeld cache-items regelmatig vernieuwen, dus u hebt een mechanisme nodig dat verlopen cache-items opschoont.
In deze sectie bespreken we hoe u items in de cache kunt opslaan samen met een vervaldatum.
$ foo = $ cachePool-> getItem ('foo'); if (! $ foo-> isHit ()) $ foo-> set ('bar'); $ Foo-> expiresAfter (30); $ CachePool-> save ($ foo);
Zoals u in het bovenstaande fragment kunt zien, kunt u de expiresAfter
methode om een vervaldatum in te stellen voor het item in de cache. U kunt het aantal seconden doorgeven waarvoor u een item wilt cachen in het eerste argument van de expiresAfter
methode.
In ons voorbeeld gebruiken we de slaap
methode om te testen of het item in de cache nog steeds beschikbaar is in de cache pool.
if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; slaap (60); if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; else echo "Cache-item is verlopen! \ n";
Ga je gang en test het om te zien hoe het werkt!
Vandaag hebben we een korte blik op de Symfony Cache-component gelegd, waarmee u caching in uw PHP-applicaties kunt instellen. Het ondersteunt ook verschillende caching-adapters die samen de flexibiliteit bieden om het type back-end te kiezen dat u wilt gebruiken.
Voel je vrij om je gedachten en vragen te uiten met behulp van het onderstaande formulier.