Aujourd'hui, je vais vous montrer le composant Symfony Cache, un moyen facile d'ajouter du cache à vos applications PHP. Cela contribue à améliorer les performances globales de votre application en réduisant le temps de chargement des pages..
Le composant Symfony Cache vous permet de configurer la mise en cache dans vos applications PHP. Le composant lui-même est très facile à installer et à configurer et vous permet de démarrer rapidement. En outre, il propose une grande variété d’adaptateurs, comme indiqué dans la liste suivante:
En ce qui concerne la mise en cache à l'aide du composant Symfony Cache, vous devez vous familiariser avec quelques termes..
Pour commencer, le élément de cache fait référence au contenu qui est stocké. Chaque élément est stocké en tant que paire clé-valeur. Les éléments de cache sont gérés par le pool de cache, qui les groupe logiquement. En fait, vous devez utiliser le pool de cache pour manipuler les valeurs de cache. Enfin, c'est le adaptateur de cache qui fait tout le gros du travail pour stocker des articles dans le cache back-end.
Dans cet article, nous verrons comment libérer la puissance du composant Cache de Symfony. Comme d'habitude, nous commencerons par l'installation et la configuration, puis nous explorerons quelques exemples concrets dans la seconde partie de l'article..
Dans cette section, nous allons installer le composant Cache. Je suppose que vous avez déjà installé Composer sur votre système. Vous en aurez besoin pour installer le composant Cache disponible sur Packagist..
Une fois que vous avez installé Composer, installez le composant Cache à l’aide de la commande suivante..
$ composer nécessite symfony / cache
Cela aurait dû créer un composer.json fichier qui devrait ressembler à ceci:
"require": "symfony / cache": "^ 4.1"
C'est tout pour l'installation, mais comment êtes-vous censé l'ajouter à votre application? C'est juste une question d'inclure le autoload.php fichier créé par Composer dans votre application, comme indiqué dans l'extrait suivant.
Dans cette section, nous allons passer à un exemple qui montre comment utiliser le composant Cache dans vos applications pour mettre en cache du contenu..
Pour commencer, allons de l'avant et créons le index.php fichier avec le contenu suivant.
getItem ('demo_string'); if (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ cachePool-> save ($ demoString); if ($ cachePool-> hasItem ('chaîne_démo')) $ demoString = $ cachePool-> getItem ('chaîne_démo'); echo $ demoString-> get (); echo "\ n"; // supprimer tous les éléments $ cachePool-> clear (); if (! $ cachePool-> hasItem ('chaîne_démo')) echo "L'entrée de cache chaîne_démo a été supprimée avec succès! \ n"; // 2. valeurs du tableau de stockage $ demoOne = $ cachePool-> getItem ('demo_array'); if (! $ demoOne-> isHit ()) $ demoOne-> set (array ("un", "deux", "trois")); $ cachePool-> save ($ demoOne); if ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); echo "\ n"; // supprime un élément spécifique $ cachePool-> deleteItem ('demo_array'); if (! $ cachePool-> hasItem ('demo_array')) echo "L'entrée en cache de demo_array a été supprimée avec succès! \ n"; // 3. définir l'expiration sur les éléments $ 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"; dormir (60); if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; else echo "L'élément de cache a expiré! \ n";
Passons en revue les parties principales de la index.php déposer pour comprendre leur but.
Comme nous l'avons vu précédemment, les éléments mis en cache sont stockés dans un pool de cache. En outre, chaque pool de cache est sauvegardé par un back-end et un adaptateur de cache spécifiques. Si vous souhaitez stocker des éléments dans le cache du système de fichiers, par exemple, vous devez initialiser le pool de cache de l'adaptateur de système de fichiers..
$ cachePool = new FilesystemAdapter (", 0," cache ");
Vous pouvez fournir trois arguments facultatifs à la FilesystemAdapter
objet:
Puisque nous avons déjà créé le pool de cache, nous pouvons l’utiliser pour stocker des éléments de cache..
Tout d'abord, nous utilisons le obtenir l'article
méthode pour récupérer l'élément de cache avec le demo_string
clé. Ensuite, nous utilisons le isHit
méthode pour vérifier si la valeur que nous recherchons est déjà présente dans l'élément de cache $ demoString
.
$ demoString = $ cachePool-> getItem ('chaîne_de_démo'); if (! $ demoString-> isHit ()) $ demoString-> set ('Hello World!'); $ cachePool-> save ($ demoString);
Comme c’est la première fois que nous allons chercher le demo_string
élément de cache, le isHit
la méthode devrait retourner faux
. Ensuite, nous utilisons le ensemble
méthode du $ demoString
objet pour définir la valeur du cache. Enfin, nous sauvons le $ demoString
élément de cache dans le $ cachePool
pool de cache en utilisant le enregistrer
méthode.
Maintenant que nous avons stocké l'élément dans le cache, voyons comment le récupérer depuis le cache..
if ($ cachePool-> hasItem ('chaîne_démo')) $ demoString = $ cachePool-> getItem ('chaîne_démo'); echo $ demoString-> get (); echo "\ n";
Ici, nous utilisons le hasItem
méthode pour vérifier l'existence de l'élément de cache dans le pool de cache avant de le récupérer.
Voyons maintenant comment supprimer tous les éléments de cache du pool de cache:
$ cachePool-> clear ();
Dans la section précédente, nous avons expliqué comment stocker les valeurs de base dans le pool de cache. Stocker les valeurs d'un tableau est à peu près le même, comme vous pouvez le voir dans l'exemple suivant.
$ demoOne = $ cachePool-> getItem ('demo_array'); if (! $ demoOne-> isHit ()) $ demoOne-> set (array ("un", "deux", "trois")); $ cachePool-> save ($ demoOne); if ($ cachePool-> hasItem ('demo_array')) $ demoOne = $ cachePool-> getItem ('demo_array'); var_dump ($ demoOne-> get ()); echo "\ n";
Comme vous pouvez le constater, nous pouvons simplement définir l’élément de cache avec une valeur de tableau, exactement comme nous l’avons fait pour une chaîne..
Voyons maintenant comment supprimer l'élément de cache spécifique du pool de cache.
$ cachePool-> deleteItem ('demo_array');
Ici, nous utilisons le effacer l'article
méthode pour supprimer le demo_array
élément du pool de cache.
Jusqu'à présent, nous avons mis en cache des éléments dans le pool sans date d'expiration. Toutefois, vous ne souhaitez généralement pas stocker les éléments dans le cache de manière permanente. Par exemple, vous voudrez peut-être actualiser régulièrement les éléments de cache. Vous avez donc besoin d'un mécanisme qui purge les éléments de cache expirés..
Dans cette section, nous verrons comment stocker des éléments dans le cache avec une date d'expiration..
$ foo = $ cachePool-> getItem ('foo'); if (! $ foo-> isHit ()) $ foo-> set ('bar'); $ foo-> expiresAfter (30); $ cachePool-> save ($ foo);
Comme vous pouvez le voir dans l'extrait ci-dessus, vous pouvez utiliser le expireAfter
méthode pour définir une date d'expiration pour l'élément mis en cache. Vous pouvez indiquer le nombre de secondes pendant lequel vous souhaitez mettre un élément en mémoire cache dans le premier argument du paramètre. expireAfter
méthode.
Dans notre exemple, nous utilisons le dormir
méthode pour tester si l'élément mis en cache est toujours disponible dans le pool de cache.
if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; dormir (60); if ($ cachePool-> hasItem ('foo')) $ foo = $ cachePool-> getItem ('foo'); echo $ foo-> get (); echo "\ n"; else echo "L'élément de cache a expiré! \ n";
Allez-y et testez-le pour voir comment cela fonctionne!
Aujourd'hui, nous avons examiné brièvement le composant Symfony Cache, qui vous permet de configurer la mise en cache dans vos applications PHP. Il prend également en charge divers adaptateurs de mise en cache qui, ensemble, vous permettent de choisir le type de back-end que vous souhaitez utiliser..
N'hésitez pas à exprimer vos pensées et vos questions en utilisant le formulaire ci-dessous.