Formation PUB030 : Laravel, 2019 La façade Cache de Laravel

Configurer le dépôt pour la façade Cache


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 :

▼Publicité Le texte se poursuit plus bas

file

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.

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.

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.

Fichiers du cache

array

Le dépôt array est une autre option qui ne nécessite aucune installation supplémentaire.

Fichier .env

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.

database

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.

Fichier .env

CACHE_DRIVER=database

Une commande artisan permet de créer le fichier de migration pour cette table.

Console Vagrant SSH

 php artisan cache:table

Memcached

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.

Installation

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 :

Terminal

sudo service memcached status

Résultat à l'écran

● 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 :

Terminal

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é.

Résultat à l'écran

...
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é.

Memcached dans phpinfo()

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 ».

Configuration de l'application

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.

Fichier .env

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.

Fichier config/cache.php

'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!

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Dernière révision le 2 mai 2021
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre