La façade Cache de Laravel permet d'accélérer l'application de façon notable par une simple gestion des informations mises en cache.
N'hésitez pas à vous en servir, c'est plus simple d'utlisation que vous ne le pensez!
Pour accélérer votre application à l'aide du cache, vous devez indiquer dans le fichier .env quel dépôt vous désirez utiliser.
Selon le dépôt choisi, vous pourriez n'avoir aucune autre configuration à faire.
Une fois les configurations effectuées, vous pourrez commencer à programmer votre application pour qu'elle stocke et libère les informations en cache selon vos besoins.
Les détails de configuration pour chaque dépôt sont donnés dans les sections plus bas :
Par défaut, Laravel est configuré pour utiliser le dépôt file, c'est-à-dire que les informations mises en cache seront enregistrées dans des fichiers sur le serveur.
Ce dépôt est l'un des plus simples à utiliser puisqu'il ne requiert aucune autre configuration.
Par contre, il ne permet pas l'utilisation d'étiquettes (tags) pour effectuer des opérations en lot sur le cache.
De plus, il n'est pas aussi rapide que les dépôts qui travaillent en mémoire vive puisque l'accès au système de fichiers demande plus de temps.
La gestion du cache avec un dépôt de type file est tout de même très intéressante, surtout à cause de la simplicité de configuration.
Pour l'utiliser, vous devez avoir cette configuration dans le fichier .env.
CACHE_DRIVER=file
Avec un tel dépôt, on peut voir les informations mises en cache sur le serveur dans le dossier storage/framework/cache/data.
Le dépôt array est une autre option qui ne nécessite aucune installation supplémentaire.
CACHE_DRIVER=array
Contrairement à file, les informations mises en cache avec array ne le seront que pour la requête HTTP actuelle dans le navigateur.
C'est pourquoi ce dépôt est surtout utilisé pour faire des tests.
Le dépôt database ne nécessite aucun paquet supplémentaire mais requiert la création d'une nouvelle table dans la base de données.
Tout comme avec le dépôt file, il n'est pas possible d'utiliser des étiquettes avec le dépôt database.
Pour l'utiliser, vous devez avoir cette configuration dans .env.
CACHE_DRIVER=database
Une commande artisan permet de créer le fichier de migration pour cette table.
php artisan cache:table
Le dépôt Memcached (prononcé memcache-D) est à mon avis un des plus intéressants. Il s'agit d'un service de stockage en mémoire – donc très rapide – de type clé-valeur.
Memcached offre nombreux avantages par rapport à file, database et array, particulièrement au niveau de la rapidité. Par contre, sa configuration est plus complexe.
Remarquez le d à la fin de Memcached. C'est qu'il existe également un module PHP nommé Memcache, sans d, mais il n'est pas supporté comme dépôt de cache avec Laravel.
Un autre dépôt est semblable à Memcached : Redis. Il est même plus puissant que Memcached et il est tout à fait supporté par Laravel.
Puisque l'utilisation de Memcached et de Redis sont très semblables, je m'attarderai seulement à Memcached ici afin de ne pas allonger cet article indûment.
Memcached nécessite l'installation sur le serveur d'un module PHP gratuit : https://pecl.php.net/package/memcached. Mais vous aurez rarement besoin d'effectuer cette installation par vous-même.
Si vous travaillez avec une boîte Homestead, tout est déjà en place.
Pour votre mise en ligne, si vous avez un forfait d'hébergement Web partagé (shared hosting), vous devez vous assurer que votre forfait vous donne accès à Memcached car les forfaits de base ne l'offrent généralement pas.
Dans l'éventualité où vous devriez installer vous-mêmes Memcached sur votre serveur, suivez les instructions sur ce site : https://serverpilot.io/docs/how-to-install-the-php-memcache-extension.
Pour vérifier si Memcached est disponible sur votre serveur, entrez cette commande dans une fenêtre Terminal :
sudo service memcached status
● memcached.service - memcached daemon
Loaded: loaded (/lib/systemd/system/memcached.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-04-29 20:30:30 UTC; 28s ago
Docs: man:memcached(1)
Main PID: 816 (memcached)
Tasks: 10 (limit: 2282)
Memory: 2.1M
CGroup: /system.slice/memcached.service
└─816 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid
Si vous n'avez pas la possibilité de lancer cette commande, vous pouvez toujours demander la liste des modules PHP installés sur le serveur :
php -m
Si Memcached est installé, il fera partie de la liste de modules qui apparaît à l'écran. Cette technique ne permet cependant pas de savoir si le service est démarré.
...
libxml
mbstring
memcached
msgpack
mysqli
...
Et dans l'éventualité où vous n'avez pas accès à une fenêtre Terminal, vous pouvez lancer une page Web qui affiche phpinfo() (attention pour ne pas laisser une telle page Web accessible à tous, ceci ouvrirait un énorme trou de sécurité).
Si Memcached est installé, vous verrez une section complète sur ses configurations. Ici encore, ceci confirme si Memcached est installé mais pas si le service est démarré.
Si vous désirez tester le tout par programmation, vous pouvez utiliser l'extrait de code que j'ai publié sur cette fiche : « Tester si Memcached fonctionne correctement ».
Pour utiliser un dépôt Memcached dans votre application Laravel, le fichier .env doit contenir quelques clés supplémentaires.
MEMCACHED_USERNAME et MEMCACHED_PASSWORD ne sont requis que si Memcached est installé avec SASL (Simple Authentication and Security Layer), c'est-à-dire qu'il faut fournir des informations d'authenficication pour y accéder (absolument nécessaire si Memcached est utilisé par plusieurs applications).
Ajustez les informations selon ce que votre hébergeur vous aura fourni.
CACHE_DRIVER=memcached
MEMCACHED_HOST=127.0.0.1
MEMCACHED_PORT=11211
MEMCACHED_USERNAME=...
MEMCACHED_PASSWORD=...
Dans le fichier config/cache.php, il est possible d'ajuster au besoin d'autres configurations pour Memcached.
Voici son contenu initial.
'stores' => [
...
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
],
Vous êtes maintenant prêts à programmer votre application pour qu'elle stocke et libère les informations en cache selon vos besoins!
▼Publicité