Les sessions et le cache
Les sessions
Le système des sessions est un mécanisme bien connu en PHP. Il permet de faire persister des données, pour chaque utilisateur, d’une page à une autre. Avec les sessions, il est possible de conserver des états, par exemple pour maintenir la connexion d’un utilisateur une fois qu’il s’est authentifié. Ou alors pour partager des données plus volatiles entre quelques pages pour une durée limitée.
1. Choisir un pilote
Le gestionnaire de sessions de Laravel supporte différents pilotes de gestions de session, permettant ainsi d’enregistrer les données de sessions dans des fichiers (via des solutions de cache de données en mémoire comme Redis ou Memcached), dans la base de données ou encore directement dans un cookie sécurisé. Le choix du pilote est à la discrétion de la personne qui développe et il peut varier en fonction des environnements.
Le choix du stockage dans des fichiers reste pertinent tant que l’application n’est pas distribuée sur plusieurs serveurs. C’est d’ailleurs le moyen le plus rapide de démarrer, et largement suffisant dans le cas de petites applications qui ont seulement quelques centaines de connexions par jour. Cependant, les applications de tailles moyennes perdront significativement en performance à effectuer des écritures disques pour chaque session, particulièrement si le disque dur n’est pas très performant.
a. Stocker dans des fichiers
Stocker les sessions dans des fichiers est le comportement par défaut sur une application Laravel. Il est défini par la ligne SESSION_DRIVER=file dans le fichier .env...
Le cache
Dans son fonctionnement, le système de cache est assez similaire au système de session. Il existe cependant une différence notable : les données ne sont pas enregistrées pour un utilisateur en particulier, mais globalement. La donnée est donc accessible à tout moment dans toute l’application, quel que soit l’utilisateur.
Le cache est généralement utilisé pour stocker des résultats de requêtes gourmandes en ressources (par exemple pour le calcul d’une statistique) ou pour des appels à une API distante. Par exemple, si un site souhaite afficher le nombre d’abonnés Twitter d’une entité sur toutes les pages, il est possible d’appeler l’API de Twitter quotidiennement et de stocker le résultat dans le cache. Cela évite d’effectuer un appel à l’API à chaque page, ce qui ralentirait cruellement la navigation et surtout surchargerait le serveur d’appels potentiellement synchrones à un serveur HTTP distant.
1. Choisir un pilote
Comme pour les sessions, Laravel propose de nombreux choix de pilotes pour le cache incluant Redis, Memcached, des fichiers ou la base de données.
a. Stockage dans des fichiers
C’est le fonctionnement par défaut. Il est défini par la ligne CACHE_DRIVER=file dans le fichier .env à la racine de l’application Laravel....