{"id":48092,"date":"2021-08-30T11:06:45","date_gmt":"2021-08-30T09:06:45","guid":{"rendered":"https:\/\/kinsta.com\/?p=98920"},"modified":"2023-11-03T03:58:11","modified_gmt":"2023-11-03T02:58:11","slug":"laravel-caching","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/","title":{"rendered":"Tout ce que vous devez savoir sur le cache de Laravel"},"content":{"rendered":"<p>La mise en cache est essentielle pour atteindre des performances \u00e9lev\u00e9es et une grande \u00e9volutivit\u00e9. Mettre en \u0153uvre la bonne strat\u00e9gie de mise en cache d\u00e8s la phase de d\u00e9veloppement est essentiel pour \u00e9viter le \u00ab lag \u00bb des API et les <a href=\"https:\/\/kinsta.com\/fr\/blog\/plugins-cache-wordpress\/\">temps de chargement des pages<\/a> trop lents. Laravel est l&rsquo;un des frameworks PHP les plus populaires, c&rsquo;est pourquoi la mise en \u0153uvre de la strat\u00e9gie de mise en cache optimale de Laravel est indispensable pour une meilleure exp\u00e9rience utilisateur et un plus grand impact commercial.<\/p>\n<p>Dans cet article, nous allons explorer des strat\u00e9gies pour mettre en \u0153uvre et manipuler la mise en cache dans Laravel. Vous d\u00e9couvrirez comment fonctionne la mise en cache Laravel, plusieurs requ\u00eates de mise en cache Laravel et comment vous pouvez g\u00e9rer la mise en cache sur les applications Laravel.<\/p>\n<p>Vous tirerez davantage profit de cet article si vous avez d\u00e9j\u00e0 des connaissances de base sur les points suivants :<\/p>\n<ul>\n<li>Bonne connaissance du <a href=\"https:\/\/kinsta.com\/fr\/blog\/outils-developpement-web\/\">d\u00e9veloppement web<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-laravel\/\">Compr\u00e9hension basique de Laravel<\/a><\/li>\n<li>Cr\u00e9ation d&rsquo;<a href=\"https:\/\/masteringbackend.com\/posts\/laravel-framework-the-ultimate-guide\" target=\"_blank\" rel=\"noopener noreferrer\">API avec Laravel<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/cache\/cache-site\/#site-cache-expiration\">Compr\u00e9hension basique de la mise en cache<\/a><\/li>\n<\/ul>\n<p>Plongeons !<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h3>Consultez notre <a href=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\">guide vid\u00e9o<\/a> sur le cache de Laravel<\/h3>\n<kinsta-video src=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\"><\/kinsta-video>\n<h2>Pourquoi la mise en cache est-elle importante ?<\/h2>\n<p>Avec le r\u00e9cent boom des entreprises Internet, diff\u00e9rentes entreprises disposent de statistiques montrant comment le temps de chargement des sites web et les faibles performances peuvent avoir un impact consid\u00e9rable sur le SEO, l&rsquo;engagement des utilisateurs et les taux de conversation sans mise en cache. Et cela commence par la mise en place d&rsquo;une excellente strat\u00e9gie de mise en cache.<\/p>\n<p>Une <a href=\"https:\/\/kinsta.com\/fr\/apprendre\/vitesse-de-site\/#slow-how-slow\">\u00e9tude en ligne a r\u00e9v\u00e9l\u00e9 que<\/a> \u00ab 1 seconde de retard de chargement ferait perdre \u00e0 Amazon 1,6 milliard de dollars de ventes par an \u00bb<\/p>\n<p>Une autre <a href=\"https:\/\/www.thinkwithgoogle.com\/future-of-marketing\/digital-transformation\/the-google-gospel-of-speed-urs-hoelzle\/\" target=\"_blank\" rel=\"noopener noreferrer\">\u00e9tude de Google a indiqu\u00e9<\/a> que : \u00ab Nos recherches montrent que si les r\u00e9sultats de recherche sont ralentis ne serait-ce que d&rsquo;une fraction de seconde, les gens cherchent moins (s\u00e9rieusement : Un <strong>retard de 400 ms<\/strong> entra\u00eene une <strong>baisse de 0,44 %<\/strong> du volume de recherche, fans de donn\u00e9es). Et cette impatience ne se limite pas \u00e0 la recherche : Quatre internautes sur cinq cliqueront ailleurs si une vid\u00e9o se bloque pendant le chargement. \u00bb<\/p>\n<p>Une l\u00e9g\u00e8re lenteur sur le temps de chargement de votre page web peut avoir un impact massif sur l&rsquo;exp\u00e9rience de vos utilisateurs et la perte de fonds en g\u00e9n\u00e9ral.<\/p>\n<h2>Qu&rsquo;est-ce que la mise en cache Laravel ?<\/h2>\n<p>Laravel fournit une mise en \u0153uvre robuste et facile \u00e0 utiliser de la mise en cache et de diff\u00e9rents backends de mise en cache. Avec Laravel cache, vous pouvez passer de mani\u00e8re efficace et effective d&rsquo;un moteur de mise en cache \u00e0 l&rsquo;autre sans \u00e9crire le moindre code.<\/p>\n<p>Vous pouvez trouver la configuration du cache Laravel dans le dossier <code><strong>config\/cache.php<\/strong><\/code> mais vous n&rsquo;aurez probablement besoin que du fichier <strong>.env<\/strong> pour passer d&rsquo;un backend de cache \u00e0 un autre.<\/p>\n<p>Laravel cache fournit \u00e9galement de nombreuses m\u00e9thodes pratiques que nous pouvons utiliser pour mettre en \u0153uvre diff\u00e9rentes strat\u00e9gies de mise en cache.<\/p>\n\n<h3>Pilotes et comparaisons du cache de Laravel<\/h3>\n<p>Laravel cache fournit d&rsquo;excellents backends et pilotes de mise en cache. En fonction de votre cas d&rsquo;utilisation, vous pouvez passer de l&rsquo;un \u00e0 l&rsquo;autre pour am\u00e9liorer les performances et le temps de chargement de votre application.<\/p>\n<p>Cela dit, Laravel cache offre aussi un moyen transparent de cr\u00e9er un backend personnalis\u00e9 et de l&rsquo;utiliser avec le cache de Laravel, mais seulement si la liste ci-dessous ne correspond pas \u00e0 votre cas d&rsquo;utilisation.<\/p>\n<p>Nous parlerons ensuite de la liste de tous les backends fournis par Laravel cache.<\/p>\n<h4>1. File<\/h4>\n<p>Le pilote <strong>file<\/strong> est le backend par d\u00e9faut utilis\u00e9 par le cache de Laravel quand aucun pilote n&rsquo;est sp\u00e9cifi\u00e9 dans le fichier <strong>.env<\/strong>.<\/p>\n<p>Le backend <strong>file<\/strong> est con\u00e7u pour stocker les donn\u00e9es mises en cache dans un fichier crypt\u00e9 se trouvant sous <code><strong>storage\/framework\/<\/strong><\/code>. Laravel cr\u00e9e un fichier crypt\u00e9 avec les donn\u00e9es et la cl\u00e9 du cache lorsque de nouvelles donn\u00e9es sont mises en cache. La m\u00eame chose se produit lorsque l&rsquo;utilisateur essaie de r\u00e9cup\u00e9rer le contenu. Le cache Laravel recherche la cl\u00e9 sp\u00e9cifi\u00e9e dans le r\u00e9pertoire et, si elle est trouv\u00e9e, renvoie le contenu.<\/p>\n<p>Bien que le backend <strong>file<\/strong> fonctionne parfaitement et permette de gagner du temps en installant et en configurant des pilotes externes, il peut aussi \u00eatre <a href=\"https:\/\/kinsta.com\/developer-roles\/development-at-kinsta\/\">parfait pour le d\u00e9veloppement<\/a>. C&rsquo;est plus rapide que d&rsquo;acc\u00e9der directement aux donn\u00e9es du serveur de base de donn\u00e9es.<\/p>\n<p>Pour utiliser le pilote de <strong>file<\/strong>, ajoutez le code suivant \u00e0 votre fichier <strong>.env :<\/strong><\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=file<\/code><\/pre>\n<h4>2. Array<\/h4>\n<p>Le pilote <strong>array<\/strong> est un backend de mise en cache parfait pour ex\u00e9cuter des tests automatis\u00e9s et se configure facilement avec Github Actions, Jenkins, etc.<\/p>\n<p>Le backend <strong>array<\/strong> stocke les donn\u00e9es mises en cache dans un tableau en PHP et ne vous demande pas d&rsquo;installer ou de configurer des pilotes. Il fonctionne parfaitement pour les tests automatis\u00e9s, et il est un peu plus rapide que le backend de cache file.<\/p>\n<p>Pour utiliser le pilote <strong>array<\/strong>, ajoutez le code suivant \u00e0 votre fichier <strong>.env :<\/strong><\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=array<\/code><\/pre>\n<h4>3. Database<\/h4>\n<p>Lorsque tu utilises le pilote <strong>database<\/strong>, les donn\u00e9es sont stock\u00e9es en m\u00e9moire pour le processus PHP en cours. Par cons\u00e9quent, vous devez cr\u00e9er une table de base de donn\u00e9es pour stocker les donn\u00e9es mises en cache. En outre, la mise en cache <a href=\"https:\/\/kinsta.com\/fr\/blog\/bases-de-donnees-wordpress\/\">database<\/a> am\u00e9liore l&rsquo;\u00e9volutivit\u00e9 en distribuant la charge de travail des requ\u00eates du backend vers plusieurs frontends.<\/p>\n<p>Vous pouvez ex\u00e9cuter cette commande Artisan &#8211; <code>php artisan cache:table<\/code> &#8211; pour g\u00e9n\u00e9rer automatiquement le sch\u00e9ma de base de donn\u00e9es n\u00e9cessaire au pilote database.<\/p>\n<p>Le pilote <strong>database<\/strong> est principalement utilis\u00e9 dans les situations o\u00f9 vous pouvez installer n&rsquo;importe quel logiciel sur votre plateforme d&rsquo;h\u00e9bergement.<\/p>\n<p>Par exemple, disons que vous utilisez un plan d&rsquo;h\u00e9bergement gratuit avec des options limit\u00e9es. Pour cela, nous vous sugg\u00e9rons de vous en tenir au pilote <strong>file<\/strong> car le pilote <strong>database<\/strong> est, dans la plupart des cas, le point faible de votre application, et essayer de pousser plus de donn\u00e9es dans ce goulot d&rsquo;\u00e9tranglement n&rsquo;est pas une bonne id\u00e9e.<\/p>\n<p>Pour utiliser le pilote <strong>database<\/strong>, ajoutez le code suivant \u00e0 votre fichier <strong>.env :<\/strong><\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=database<\/code><\/pre>\n<h4>4. Redis<\/h4>\n<p>Le pilote <strong>Redis<\/strong> utilise la technologie de mise en cache bas\u00e9e sur la m\u00e9moire appel\u00e9e <a href=\"https:\/\/kinsta.com\/fr\/docs\/hebergement-wordpress\/cache\/cache-redis\/\" target=\"_blank\" rel=\"noopener noreferrer\">Redis<\/a>. Bien qu&rsquo;il soit rapide par rapport aux autres pilotes de cache discut\u00e9s ci-dessus, il n\u00e9cessite l&rsquo;installation et la configuration d&rsquo;une technologie externe.<\/p>\n<p>Pour utiliser le pilote <strong>redis<\/strong>, ajoutez le code suivant \u00e0 votre fichier <strong>.env <\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=redis<\/code><\/pre>\n<h4>5. Memcached<\/h4>\n<p>Memcached est connu pour \u00eatre le stockage de cache bas\u00e9 sur la m\u00e9moire le plus populaire. Si cela ne vous d\u00e9range pas d&rsquo;avoir un peu de maintenance suppl\u00e9mentaire sur le serveur (devoir installer et maintenir des services suppl\u00e9mentaires), les pilotes de cache bas\u00e9s sur la m\u00e9moire Memcached sont d&rsquo;excellentes options.<\/p>\n<p>L&rsquo;utilisation du pilote <strong>memcached<\/strong> n\u00e9cessite l&rsquo;installation du <a href=\"https:\/\/pecl.php.net\/package\/memcached\" target=\"_blank\" rel=\"noopener noreferrer\">paquet PECL Memcached<\/a>.<\/p>\n<p>Pour utiliser le pilote <strong>memcached<\/strong>, ajoutez le code suivant \u00e0 votre fichier <strong>.env<\/strong>.<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=memcached <\/code><\/pre>\n<p>Le <a href=\"https:\/\/www.georgebuckingham.com\/laravel-cache-driver-performance\/\" target=\"_blank\" rel=\"noopener noreferrer\">meilleur pilote de cache \u00e0 utiliser et les performances<\/a> du pilote de cache d\u00e9pendent du cas d&rsquo;utilisation de votre projet et de la quantit\u00e9 de donn\u00e9es \u00e0 r\u00e9cup\u00e9rer.<\/p>\n<h3>Utilisation et m\u00e9thodes de Laravel Cache<\/h3>\n<p>Laravel cache fournit de nombreuses m\u00e9thodes pr\u00e9cieuses utilis\u00e9es pour mettre en \u0153uvre de nombreuses strat\u00e9gies de mise en cache.<\/p>\n<p>Ci-dessous, nous allons \u00e9num\u00e9rer et expliquer les diff\u00e9rentes m\u00e9thodes (cat\u00e9goris\u00e9es en fonction de leur cas d&rsquo;utilisation) :<\/p>\n<ol>\n<li><code>put()<\/code><\/li>\n<li><code>get()<\/code><\/li>\n<li><code>many()<\/code><\/li>\n<li><code>putMany()<\/code><\/li>\n<li><code>incr\u00e9menter()<\/code><\/li>\n<li><code>d\u00e9cr\u00e9mente()<\/code><\/li>\n<li><code>forever()<\/code><\/li>\n<li><code>oublier()<\/code><\/li>\n<li><code>flush()<\/code><\/li>\n<li><code>remember()<\/code><\/li>\n<li><code>rememberForever()<\/code><\/li>\n<\/ol>\n<h4>Stockage du cache<\/h4>\n<p>Le stockage de nouvelles donn\u00e9es dans le cache est tr\u00e8s simple gr\u00e2ce aux diff\u00e9rentes m\u00e9thodes, chacune ayant plusieurs cas d&rsquo;utilisation.<\/p>\n<h5>1. Cache::put()<\/h5>\n<p>Cette m\u00e9thode accepte trois param\u00e8tres cl\u00e9s, <strong>duration<\/strong> et <strong>data<\/strong> \u00e0 mettre en cache.<\/p>\n<p>Voyons comment utiliser la m\u00e9thode suivante <code><strong>Cache::put()<\/strong><\/code>:<\/p>\n<pre><code class=\"language-php\">Cache::put(key, data, duration)\n\n$post = Post::find(1) ;\n\nCache::put('post_1', $post, 20) ;\n<\/code><\/pre>\n<p>Le code ci-dessus mettra en cache la publication avec une <strong>cl\u00e9<\/strong> unique pendant 20 secondes.<\/p>\n<h5>2. Cache::putMany()<\/h5>\n<p>Cette m\u00e9thode stocke un tableau de donn\u00e9es dans le cache en une seule fois avec la m\u00eame dur\u00e9e. Elle accepte deux param\u00e8tres qui sont <strong>data<\/strong> et <strong>seconds<\/strong>.<\/p>\n<p>Voyons comment utiliser la m\u00e9thode <code><strong>Cache::putMany()<\/strong><\/code>:<\/p>\n<pre><code class=\"language-php\">Cache::putMany(data, duration) \/\/ syntax\n\n$posts = Post::all() ;\n\nCache::putMany($posts, 20) ;<\/code><\/pre>\n<h5>3. Cache::remember()<\/h5>\n<p>Cette m\u00e9thode est un autre excellent moyen de mettre en \u0153uvre la strat\u00e9gie Aside du cache. La m\u00e9thode <code><strong>Cache::remember()<\/strong><\/code> accepte trois param\u00e8tres, <strong>key<\/strong>, <strong>seconds<\/strong> et <strong>closure<\/strong> utilis\u00e9e pour r\u00e9cup\u00e9rer les donn\u00e9es dans la base de donn\u00e9es si elles ne sont pas trouv\u00e9es.<\/p>\n<p>Voyons comment utiliser la m\u00e9thode suivante <code><strong>Cache::remember()<\/strong><\/code>:<\/p>\n<pre><code class=\"language-php\">Cache::remember(key, duration, closure) \/\/ syntax\n\nCache::remember('posts', 20, function(){\n  retourne Post::all() ;\n}) ;\n<\/code><\/pre>\n<p>Le cache de Laravel dispose \u00e9galement de la m\u00e9thode <code><strong>Cache::rememberForever()<\/strong><\/code> qui n&rsquo;accepte pas le param\u00e8tre <strong>seconds<\/strong> et stocke <strong>data<\/strong> pour toujours.<\/p>\n<h5>4. Cache::forever()<\/h5>\n<p>Cette m\u00e9thode stocke les donn\u00e9es dans le serveur cache pour toujours sans sp\u00e9cifier de dur\u00e9e. Vous pouvez l&rsquo;impl\u00e9menter avec le code suivant :<\/p>\n<pre><code class=\"language-php\">Cache::forever(key, data)\n\n$post = Post::find(1) ;\n\nCache::forever('post_1', $post) ;\n<\/code><\/pre>\n<h4>R\u00e9cup\u00e9ration des donn\u00e9es du cache<\/h4>\n<p>Les m\u00e9thodes de cette cat\u00e9gorie r\u00e9cup\u00e8rent les donn\u00e9es du cache. Certaines de ces m\u00e9thodes peuvent se comporter diff\u00e9remment selon que les donn\u00e9es sont trouv\u00e9es ou non.<\/p>\n<h5>1. Cache::get()<\/h5>\n<p>Cette m\u00e9thode r\u00e9cup\u00e8re les donn\u00e9es du serveur de cache avec une cl\u00e9 sp\u00e9cifique. Vous pouvez r\u00e9cup\u00e9rer un \u00e9l\u00e9ment \u00e0 l&rsquo;aide du code ci-dessous :<\/p>\n<pre><code class=\"language-php\">Cache::get(key) \/\/ syntax\n\n$posts = Cache::get('posts') ;<\/code><\/pre>\n<h5>2. Cache::many()<\/h5>\n<p>Cette m\u00e9thode est similaire \u00e0 <code><strong>Cache::putMany()<\/strong><\/code>. Elle est utilis\u00e9e pour r\u00e9cup\u00e9rer un tableau de donn\u00e9es mises en cache en une seule fois en utilisant un tableau de cl\u00e9s de cache. Vous pouvez r\u00e9cup\u00e9rer un tableau de cache \u00e0 l&rsquo;aide du code suivant :<\/p>\n<pre><code class=\"language-php\">Cache::many(keys) \/\/ syntax\n\nconst $keys = [\n  'posts',\n  'post_1',\n  'post_2\n] ;\n\n$posts = Cache::many($keys) ;\n<\/code><\/pre>\n<h5>3. Cache::remember()<\/h5>\n<p>Vous pouvez aussi utiliser cette m\u00e9thode pour r\u00e9cup\u00e9rer les donn\u00e9es mises en cache en v\u00e9rifiant le serveur de cache \u00e0 l&rsquo;aide de la cl\u00e9 fournie. Si les donn\u00e9es sont stock\u00e9es dans le cache, elle les r\u00e9cup\u00e9rera. Sinon, il r\u00e9cup\u00e9rera les donn\u00e9es du serveur de base de donn\u00e9es et les mettra en cache. Cette m\u00e9thode est la m\u00eame que la m\u00e9thode <code><strong>Cache::rememberForever()<\/strong><\/code> avec juste un param\u00e8tre suppl\u00e9mentaire <strong>seconds<\/strong> dans la m\u00e9thode <code><strong>Cache::remember()<\/strong><\/code> m\u00e9thode.<\/p>\n<h4>Supprimer des \u00e9l\u00e9ments du cache<\/h4>\n<p>Les m\u00e9thodes de cette cat\u00e9gorie sont utilis\u00e9es pour retirer des \u00e9l\u00e9ments du cache, regroup\u00e9es par fonctionnalit\u00e9.<\/p>\n<h5>1. Cache::forget()<\/h5>\n<p>Cette m\u00e9thode supprime un seul \u00e9l\u00e9ment du cache avec un param\u00e8tre cl\u00e9 sp\u00e9cifi\u00e9 :<\/p>\n<pre><code class=\"language-php\">Cache::forget('key') ;<\/code><\/pre>\n<h5>2. Cache::flush()<\/h5>\n<p>Cette m\u00e9thode vide tous les moteurs de cache. Elle supprime tous les \u00e9l\u00e9ments stock\u00e9s n&rsquo;importe o\u00f9 dans le cache :<\/p>\n<pre><code class=\"language-php\">Cache::flush() ;<\/code><\/pre>\n<h4>Incr\u00e9menter ou d\u00e9cr\u00e9menter les valeurs du cache<\/h4>\n<p>Vous pouvez ajuster les valeurs d&rsquo;un nombre entier stock\u00e9 dans votre cache en utilisant les m\u00e9thodes d&rsquo;incr\u00e9mentation et de d\u00e9cr\u00e9mentation, respectivement :<\/p>\n<pre><code class=\"language-php\">Cache::increment('key') ;\n\nCache::increment('key', $amount) ;\n\nCache::decrement('key') ;\n\nCache::decrement('key', $amount) ;\n<\/code><\/pre>\n<p>Le cache de Laravel poss\u00e8de de nombreuses m\u00e9thodes formidables que nous n&rsquo;avons pas abord\u00e9es ci-dessus, mais les m\u00e9thodes ci-dessus sont populaires. Vous pouvez obtenir un aper\u00e7u de toutes les m\u00e9thodes dans la <a href=\"https:\/\/laravel.com\/docs\/8.x\/cache#cache-usage\">documentation officielle du cache Laravel<\/a>.<\/p>\n<h3>Les commandes de cache expliqu\u00e9es<\/h3>\n<p>Laravel fournit des commandes pour rendre le travail avec le cache de Laravel facile et rapide. Vous trouverez ci-dessous la liste de toutes les <a href=\"https:\/\/kinsta.com\/fr\/blog\/commandes-ssh\/\">commandes<\/a> et leurs fonctionnalit\u00e9s.<\/p>\n<h4>Vider le cache de Laravel<\/h4>\n<p>Cette commande permet de vider le cache de Laravel avant m\u00eame son expiration en utilisant le terminal\/console. Par exemple, vous pouvez ex\u00e9cuter la commande suivante :<\/p>\n<pre><code class=\"language-bash\">php artisan cache:clear<\/code><\/pre>\n<h4>Vider Route-Cache<\/h4>\n<p>Cette commande est utilis\u00e9e pour vider le cache route de votre application Laravel. Par exemple, ex\u00e9cutez la commande suivante pour vider votre cache route :<\/p>\n<pre><code class=\"language-bash\">php artisan config:cache<\/code><\/pre>\n<h4>Effacer les fichiers de vue compil\u00e9s<\/h4>\n<p>Cette commande est utilis\u00e9e pour effacer les fichiers de vue compil\u00e9s de votre application Laravel. Vous pouvez y parvenir avec la commande suivante :<\/p>\n<pre><code class=\"language-php\">php artisan view:clear<\/code><\/pre>\n<h4>Tableau de base de donn\u00e9es<\/h4>\n<p>Lorsque vous utilises le pilote database, vous devez cr\u00e9er un sch\u00e9ma de base de donn\u00e9es appel\u00e9 <strong>cache<\/strong> pour stocker les donn\u00e9es du cache. Vous pouvez aussi utiliser la commande Artisan pour g\u00e9n\u00e9rer une migration avec le sch\u00e9ma appropri\u00e9 :<\/p>\n<pre><code class=\"language-bash\">php artisan cache:table<\/code><\/pre>\n<h2>Strat\u00e9gies de mise en cache de Laravel<\/h2>\n<p>Selon le cas d&rsquo;utilisation de votre application et la structure des donn\u00e9es, plusieurs strat\u00e9gies de cache diff\u00e9rentes sont probablement \u00e0 votre disposition. Vous pouvez m\u00eame cr\u00e9er une strat\u00e9gie personnalis\u00e9e pour r\u00e9pondre \u00e0 vos besoins. Ci-dessous, nous allons passer en revue la liste des strat\u00e9gies de mise en cache populaires que vous pouvez mettre en \u0153uvre dans votre projet Laravel.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Kinsta vous permet d&rsquo;utiliser Laravel pour vos produits, m\u00eame s&rsquo;il n&rsquo;est pas officiellement pris en charge par notre \u00e9quipe.<\/p>\n<\/aside>\n\n<h3>writeThrough<\/h3>\n<p>Dans la strat\u00e9gie <strong>writeThrough<\/strong>, le serveur de cache se trouve entre les requ\u00eates et le serveur de base de donn\u00e9es, ce qui fait que chaque op\u00e9ration d&rsquo;<strong>\u00e9criture<\/strong> passe par le serveur de cache avant d&rsquo;aller au serveur de base de donn\u00e9es. Ainsi, la strat\u00e9gie de mise en cache <strong>writeThrough<\/strong> est similaire \u00e0 la strat\u00e9gie <strong>readThrough<\/strong>.<\/p>\n<p>Vous pouvez mettre en place cette strat\u00e9gie avec le cache de Laravel avec le code suivant :<\/p>\n<pre><code class=\"language-php\">public function writeThrough($key, $data, $minutes) {\n    $cacheData = Cache::put($key, $data, $minutes)\n\n    \/\/ Database server is called from(after) the Cache Server.\n    $this-&gt;storeToDB($cacheData)\n    return $cacheData\n}\n\nprivate function storeToDB($data){\n    Database::create($data)\n    return true\n}<\/code><\/pre>\n<h3>writeBack (writeBehind)<\/h3>\n<p>Cette strat\u00e9gie est une fa\u00e7on plus avanc\u00e9e de mettre en \u0153uvre la strat\u00e9gie <strong>writeThrough<\/strong> en ajoutant des d\u00e9lais dans les op\u00e9rations d&rsquo;\u00e9criture.<\/p>\n<p>Vous pouvez aussi l&rsquo;appeler la strat\u00e9gie <strong>writeBehind<\/strong> en raison du d\u00e9lai appliqu\u00e9 au serveur de cache avant d&rsquo;\u00e9crire les donn\u00e9es sur le serveur de base de donn\u00e9es.<\/p>\n<p>Vous pouvez mettre en \u0153uvre cette strat\u00e9gie avec le cache de Laravel avec le code suivant :<\/p>\n<pre><code class=\"language-php\">$durationToFlush = 1; \/\/ (in minute)\n $tempDataToFlush = [];\n\n  public function writeBack($key, $data, $minutes){\n    return $this-&gt;writeThrough($key, $data, $minutes);\n  }\n\n  public function writeThrough($key, $data, $minutes){\n      $cacheData = Cache::put($key, $data, $minutes);\n      $this-&gt;storeForUpdates($cacheData);\n      retourne $cacheData;\n  }\n\n\/\/ Store new data to temp Array for updatting\n  private function storeForUpdates($data){\n    $tempData = {};\n    $tempData['dur\u00e9e'] = this.getMinutesInMilli();\n    $tempData['data'] = data;\n    array_push($tempDataToFlush, data);\n  }\n\n\/\/ Converts minutes to milliseconds\nprivate function getMinutesInMilli(){\n  $currentDate = now();\n  $futureDate = Carbon(Carbon::now()-&gt;timestamp + $this-&gt;durationToFlush * 60000)\n  return $futureDate-&gt;timestamp\n}\n\n\/\/ Calls to update the Databse server.\npublic function updateDatabaseServer(){\n  if($this-&gt;tempDataToFlush){\n    foreach($this-&gt;tempDataToFlush as $index =&gt; $obj){\n      if($obj-&gt;duration timestamp){\n        if(Database::create($obj-&gt;data)){\n            array_splice($this-&gt;tempDataToFlush, $index, 1) ;\n        }\n      }\n    }\n  }\n}<\/code><\/pre>\n<p>La m\u00e9thode <strong>writeBack<\/strong> appelle la m\u00e9thode <strong>writeThrough<\/strong>, qui stocke les donn\u00e9es sur le serveur de cache et un tableau temporaire \u00e0 pousser plus tard sur le serveur de base de donn\u00e9es \u00e0 l&rsquo;aide de la m\u00e9thode <strong>updateDatabaseServer<\/strong>. Vous pouvez configurer un <a href=\"https:\/\/masteringbackend.com\/posts\/laravel-cron-the-definitive-guide\" target=\"_blank\" rel=\"noopener noreferrer\">CronJob<\/a> pour mettre \u00e0 jour le serveur de base de donn\u00e9es toutes les cinq minutes.<\/p>\n<h3>writeAround<\/h3>\n<p>Cette strat\u00e9gie permet \u00e0 toutes les op\u00e9rations <strong>write<\/strong> d&rsquo;aller directement sur le serveur de base de donn\u00e9es sans mettre \u00e0 jour le serveur de cache &#8211; ce n&rsquo;est que pendant les op\u00e9rations de <strong>lecture<\/strong> que le serveur de cache est mis \u00e0 jour.<\/p>\n<p>En supposant qu&rsquo;un utilisateur veuille cr\u00e9er un nouvel <strong>Article<\/strong>, l&rsquo;<strong>Article<\/strong> est enregistr\u00e9 directement sur le serveur de base de donn\u00e9es. Lorsque l&rsquo;utilisateur veut lire le contenu de l&rsquo;<strong>Article<\/strong> pour la premi\u00e8re fois, l&rsquo;<strong>Article<\/strong> est r\u00e9cup\u00e9r\u00e9 sur le serveur de base de donn\u00e9es et met \u00e0 jour le serveur cache pour les requ\u00eates suivantes.<\/p>\n<p>Vous pouvez mettre en place cette strat\u00e9gie avec le cache de Laravel avec le code suivant :<\/p>\n<pre><code class=\"language-php\">public function writeAround($data){\n    $storedData = Database::create($data);\n    retourne $storedData;\n}\n\npublic function readOperation($key, $minutes){\n    $cacheData = Cache::remember($key, $minutes, function() {\n      return Article::all();\n    })\n    retourne $cacheData;\n}\n<\/code><\/pre>\n<h3>Cachement \u00e0 part (chargement diff\u00e9r\u00e9)<\/h3>\n<p>Dans cette strat\u00e9gie, la base de donn\u00e9es est mise de c\u00f4t\u00e9 et l&rsquo;application demande d&rsquo;abord les donn\u00e9es au serveur de cache. Ensuite, s&rsquo;il y a un r\u00e9sultat positif (trouv\u00e9), les donn\u00e9es sont renvoy\u00e9es au client. Sinon, s&rsquo;il y a un \u00e9chec (non trouv\u00e9), le serveur de base de donn\u00e9es demande les donn\u00e9es et met \u00e0 jour le serveur cache pour les requ\u00eates suivantes.<\/p>\n<p>Vous pouvez mettre en \u0153uvre cette strat\u00e9gie avec le cache de Laravel avec le code suivant :<\/p>\n<pre><code class=\"language-php\">public function lazyLoadingStrategy($key, $minutes, $callback) {\n  if (Cache::has($key)) {\n      $data = Cache::get($key) ;\n      return $data ;\n  } else {\n      \/\/ Database Server is called outside the Cache Server.\n      $data = $callback();\n      Cache::set($key, $data, $minutes);\n      retourne $data;\n  }\n}<\/code><\/pre>\n<p>Le code ci-dessus montre la mise en \u0153uvre de la strat\u00e9gie cache Aside, qui \u00e9quivaut \u00e0 la mise en \u0153uvre de la m\u00e9thode <strong>Cache::remember<\/strong>.<\/p>\n<h3>Lire \u00e0 travers<\/h3>\n<p>Cette strat\u00e9gie est l&rsquo;oppos\u00e9 direct de la strat\u00e9gie cache Aside. Dans cette strat\u00e9gie, le serveur de cache se trouve entre la requ\u00eate du client et le serveur de base de donn\u00e9es.<\/p>\n<p>Les requ\u00eates vont directement au serveur de cache, et le serveur de cache est charg\u00e9 de r\u00e9cup\u00e9rer les donn\u00e9es du <a href=\"https:\/\/kinsta.com\/fr\/blog\/installer-php\/\">serveur de base de donn\u00e9es<\/a> si elles ne sont pas trouv\u00e9es dans le serveur de cache.<\/p>\n<p>Vous pouvez mettre en place cette strat\u00e9gie avec le cache Laravel avec le code suivant :<\/p>\n<pre><code class=\"language-php\">public function readThrough($key, $minutes) {\n      $data = Cache::find($key, $minutes);\n      return $data;\n}\n\nprivate function find($key, $minutes){\n    if(Cache::has($key) ;){\n      return Cache::get($key) ;\n    }\n\n    \/\/ Database Server is called from the Cache Server.\n    $DBdata = Database::find($key);\n    Cache:put($key, $DBdata, $minutes);\n    retourne $DBdata ;\n}<\/code><\/pre>\n<p>Voil\u00e0, c&rsquo;est fait ! Nous avons maintenant abord\u00e9 quelques strat\u00e9gies de mise en cache populaires pour votre prochaine application Laravel. N&rsquo;oubliez pas que vous pouvez m\u00eame utiliser une strat\u00e9gie de mise en cache personnalis\u00e9e qui correspond le mieux aux exigences de votre projet.<\/p>\n<h2>Mise en cache de la partie UI d&rsquo;une application Laravel<\/h2>\n<p>La mise en cache de l&rsquo;interface utilisateur de notre application Laravel est un concept connu sous le nom de Full Page cache FPC. Ce terme d\u00e9signe le processus de mise en cache de la r\u00e9ponse HTML d&rsquo;une application.<\/p>\n<p>C&rsquo;est excellent pour les applications o\u00f9 les donn\u00e9es HTML dynamiques ne changent pas fr\u00e9quemment. Vous pouvez mettre en cache la r\u00e9ponse HTML pour obtenir une r\u00e9ponse globale et un rendu plus rapides du HTML.<\/p>\n<p>Nous pouvons mettre en \u0153uvre FPC avec la ligne de code suivante :<\/p>\n<pre><code class=\"language-php\">class ArticlesController extends Controller {\n    public function index() {\n        if ( Cache::has('articles_index') ) {\n            return Cache::get('articles_index') ;\n        } else {\n            $news = News::all() ;\n            $cachedData = view('articles.index')-&gt;with('articles', $news)-&gt;render() ;\n            Cache::put('articles_index', $cachedData) \n            retourne $cachedData \n        }  \n    }\n}<\/code><\/pre>\n<p>\u00c0 premi\u00e8re vue, vous avez peut-\u00eatre remarqu\u00e9 que nous v\u00e9rifions si la page <strong>articles_index<\/strong> existe d\u00e9j\u00e0 dans notre serveur de cache. Puis nous renvoyons la page en la rendant avec les m\u00e9thodes <strong>view()<\/strong> et <strong>render()<\/strong> de Laravel.<\/p>\n<p>Sinon, nous effectuons le rendu de la page et stockons le r\u00e9sultat dans notre serveur de cache pour les requ\u00eates suivantes avant de renvoyer la page rendue au navigateur.<\/p>\n<h2>Construire une application Laravel<\/h2>\n<p>Nous allons maintenant appliquer ce que nous avons appris jusqu&rsquo;\u00e0 pr\u00e9sent en cr\u00e9ant un nouveau projet Laravel et en impl\u00e9mentant le cache Laravel.<\/p>\n<p>Si vous n&rsquo;avez jamais utilis\u00e9 Laravel, vous pouvez lire ce <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-laravel\/\">qu&rsquo;est Laravel<\/a> et jeter un \u0153il \u00e0 notre liste d&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/blog\/tutoriels-laravel\/\">excellents tutoriels Laravel<\/a> pour commencer.<\/p>\n<h3>Configuration de Laravel<\/h3>\n<p>Tout d&rsquo;abord, nous allons cr\u00e9er une instance fra\u00eeche de Laravel \u00e0 l&rsquo;aide de la commande ci-dessous. Vous pouvez consulter la documentation officielle pour en savoir plus.<\/p>\n<p>Ouvrez votre console et naviguez jusqu&rsquo;\u00e0 l&rsquo;endroit o\u00f9 vous stockez vos projets PHP avant d&rsquo;ex\u00e9cuter les commandes ci-dessous. Assurez-vous que <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> est correctement install\u00e9 et configur\u00e9.<\/p>\n<pre><code class=\"language-bash\">composer crate-project laravel\/laravel fast-blog-app\n\n\/\/ Change directory to current Laravel installation\ncd fast-blog-app\n\n\/\/ Start Laravel development server.\nphp artisan serve\n<\/code><\/pre>\n<h3>Configurer et nourrir la base de donn\u00e9es<\/h3>\n<p>Ensuite, nous allons configurer notre base de donn\u00e9es, cr\u00e9er un nouveau mod\u00e8le d&rsquo;<strong>article<\/strong> et cr\u00e9er 500 faux points de donn\u00e9es pour les tests.<\/p>\n<p>Ouvrez votre <a href=\"https:\/\/kinsta.com\/fr\/blog\/adminer\/\" target=\"_blank\" rel=\"noopener noreferrer\">client de base de donn\u00e9es<\/a> et cr\u00e9ez une nouvelle base de donn\u00e9es. Nous ferons de m\u00eame avec le nom <strong>fast_blog_app_db<\/strong>, puis nous remplirons notre fichier <strong>.env<\/strong> avec les informations d&rsquo;identification de la base de donn\u00e9es :<\/p>\n<pre><code class=\"language-bash\">DB_CONNECTION=mysql\nDB_HOST=127.0.0.1\nDB_PORT=3306\nDB_DATABASE=fast_blog_app_db\nDB_USERNAME=\/\/DB USERNAME ICI\nDB_PASSWORD=\/\/DB MOT DE PASSE ICI\n<\/code><\/pre>\n<p>Ensuite, nous allons ex\u00e9cuter la commande suivante pour cr\u00e9er la migration et le mod\u00e8le d&rsquo;<strong>article<\/strong> simultan\u00e9ment :<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Article -m<\/code><\/pre>\n<p>Ouvrez la migration nouvellement cr\u00e9\u00e9e trouv\u00e9e <code>database\/migrations\/xxx-create-articles-xxx.php<\/code> et collez le code suivant :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nutilise Illuminate\\Support\\Facades\\Schema;\nutilise Illuminate\\Database\\Schema\\Blueprint;\nutilise Illuminate\\Database\\Migrations\\Migration;\nclass CreateArticlesTable extends Migration\n{\n    \/**\n     * Run the migrations.\n     *\n     * @return void\n     *\/\n    public function up()\n    {\n        Schema::create('articles', function (Blueprint $table) {\n            $table-&gt;id();\n            $table-&gt;string('title');\n            $table-&gt;text ('description');\n            $table-&gt;timestamps();\n        }) ;\n    }\n    \/**\n     * Reverse the migrations.\n     *\n     * @return void\n     *\/\n    public function down()\n    {\n        Schema::dropIfExists('articles') ;\n    }\n}<\/code><\/pre>\n<p>Ensuite, ex\u00e9cutez la commande ci-dessous pour cr\u00e9er un nouveau seeder :<\/p>\n<pre><code class=\"language-bash\">php artisan make:seeder ArticleSeeder<\/code><\/pre>\n<p>Ouvrez le fichier seeder nouvellement cr\u00e9\u00e9 qui se trouve dans <code>database\/seeders\/ArticleSeeder.php<\/code> et collez le code suivant :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace Database\\Seeders;\nuse App\\Models\\Article;\nuse Illuminate\\Database\\Seeder;\nclass ArticleSeeder extends Seeder\n{\n    \/**\n     * Run thz databse seeds.\n     *\n     * @return void\n     *\/\n    public function run()\n    {\n        Article::factory()-&gt;count(500)-&gt;create();\n    }\n}<\/code><\/pre>\n<p>Ouvrez le fichier <strong>DatabaseSeeder.php<\/strong> dans le m\u00eame r\u00e9pertoire et ajoutez le code suivant :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace Database\\Seeders;\nuse Illuminate\\Database\\Seeder;\nclass DatabaseSeeder extend Seeder\n{\n    \/**\n     * Seed the application's data&base.\n     *\n     * @return void\n     *\/\n    fonction publique run()\n    {\n        $this-&gt;call(ArticleSeeder::class);\n    }\n}<\/code><\/pre>\n<p>Ensuite, ex\u00e9cutez la commande ci-dessous pour cr\u00e9er une nouvelle Factory :<\/p>\n<pre><code class=\"language-bash\">php artisan make:factory ArticleFactory<\/code><\/pre>\n<p>Ouvrez le fichier factory nouvellement cr\u00e9\u00e9 qui se trouve dans <code>database\/factories\/ArticleFactory.php<\/code> et collez le code suivant :<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace Database\\Factories ;\nuse App\\Models\\Article;\nuse Illuminate\\Database\\Eloquent\\Factories\\Factory;\nclass ArticleFactory extends Factory\n{\n    \/**\n     * The name of the factory's corresponding model.\n     *\n     * @var string\n     *\/\n    protected $model = Article::class;\n    \/**\n     * Define the model's default state.\n     *\n     * @return array\n     *\/\n    public function definition()\n    {\n        return [\n            'title' =&gt; $this-&gt;faker-&gt;text(),\n            'description' =&gt; $this-&gt;faker-&gt;paragraphe(20)\n        ];\n    }\n}<\/code><\/pre>\n<p>Maintenant, ex\u00e9cutez la commande ci-dessous pour migrer notre sch\u00e9ma nouvellement cr\u00e9\u00e9 et \u00e9galement cr\u00e9er nos fausses donn\u00e9es pour les tests :<\/p>\n<pre><code class=\"language-bash\">php artisan migrate --seed<\/code><\/pre>\n<h3>Cr\u00e9er le contr\u00f4leur d&rsquo;article<\/h3>\n<p>Ensuite, nous allons cr\u00e9er notre contr\u00f4leur et configurer nos routes pour traiter notre requ\u00eate et r\u00e9cup\u00e9rer les donn\u00e9es \u00e0 l&rsquo;aide du mod\u00e8le ci-dessus.<\/p>\n<p>Ex\u00e9cutez la commande suivante pour cr\u00e9er un nouveau <strong>ArticlesController<\/strong> dans le r\u00e9pertoire <code>app\/Http\/Controllers<\/code>:<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller ArticlesController --resource<\/code><\/pre>\n<p>Ouvrez le fichier et ajoutez le code suivant \u00e0 la classe :<\/p>\n<pre><code class=\"language-php\">\/\/ Return all 500 articles with Caching\npublic function index() {\n  return Cache::remember('articles', 60, function () {\n      return Article::all();\n  });\n}\n\n\/\/ Return all 500 without Caching\npublic function allWithoutCache() {\n  renvoie Article::all();\n}<\/code><\/pre>\n<p>Ensuite, ouvrez le fichier <strong>api.php<\/strong> qui se trouve dans le r\u00e9pertoire <code>routes\/<\/code> et collez le code suivant pour cr\u00e9er un point de terminaison que nous pouvons appeler pour r\u00e9cup\u00e9rer nos donn\u00e9es :<\/p>\n<pre><code class=\"language-php\">Route::get('\/articles', 'ArticlesController@index');\n\nRoute::get('\/articles\/withoutcache', 'ArticlesController@allWithoutcache');<\/code><\/pre>\n<h3>Tester les performances<\/h3>\n<p>Enfin, nous allons <a href=\"https:\/\/kinsta.com\/fr\/blog\/application-surveillance-performance\/\">tester les performances<\/a> de la r\u00e9ponse de notre application avec ou sans la mise en \u0153uvre du cache de Laravel.<\/p>\n<p>Cette capture d&rsquo;\u00e9cran montre le temps de r\u00e9ponse de l&rsquo;API avec le cache impl\u00e9ment\u00e9 :<\/p>\n<figure id=\"attachment_99464\" aria-describedby=\"caption-attachment-99464\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-99464 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/laravel-api-response-time-cache-1024x583.png\" alt=\"Temps de r\u00e9ponse de l'API Laravel avec le cache.\" width=\"1024\" height=\"583\"><figcaption id=\"caption-attachment-99464\" class=\"wp-caption-text\">Temps de r\u00e9ponse de l&rsquo;API Laravel avec le cache.<\/figcaption><\/figure>\n<p>La capture d&rsquo;\u00e9cran suivante montre le temps de r\u00e9ponse de l&rsquo;API sans cache impl\u00e9ment\u00e9 &#8211; notez que le temps de r\u00e9ponse a augment\u00e9 de plus de <strong>5 000 %<\/strong> par rapport \u00e0 l&rsquo;instance mise en cache :<\/p>\n<figure id=\"attachment_99465\" aria-describedby=\"caption-attachment-99465\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-99465 size-large\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/laravel-api-response-time-no-cache-1024x584.png\" alt=\"Temps de r\u00e9ponse de l'API Laravel sans cache.\" width=\"1024\" height=\"584\"><figcaption id=\"caption-attachment-99465\" class=\"wp-caption-text\">Temps de r\u00e9ponse de l&rsquo;API Laravel sans cache.<\/figcaption><\/figure>\n\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Nous avons explor\u00e9 diverses strat\u00e9gies pour mettre en \u0153uvre et manipuler le cache de Laravel en cr\u00e9ant un nouveau projet, en \u00e9valuant ses r\u00e9ponses et en comparant les r\u00e9sultats.<\/p>\n<p>Vous avez \u00e9galement appris \u00e0 utiliser les diff\u00e9rents pilotes et m\u00e9thodes de mise en cache de Laravel. En outre, nous avons mis en \u0153uvre diff\u00e9rentes strat\u00e9gies de mise en cache pour vous aider \u00e0 d\u00e9terminer celle qui pourrait vous convenir.<\/p>\n<p>Pour en savoir plus sur Laravel, explorez notre s\u00e9lection tri\u00e9e sur le volet des <a href=\"https:\/\/kinsta.com\/fr\/blog\/tutoriels-laravel\/\">meilleurs tutoriels Laravel<\/a>. Que vous soyez un d\u00e9butant ou un d\u00e9veloppeur Laravel avanc\u00e9, il y a quelque chose pour tout le monde l\u00e0-dedans !<\/p>\n<p><em>Si vous avez encore des questions sur la mise en cache Laravel, fa\u00eetes-nous en part dans la section des commentaires.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La mise en cache est essentielle pour atteindre des performances \u00e9lev\u00e9es et une grande \u00e9volutivit\u00e9. Mettre en \u0153uvre la bonne strat\u00e9gie de mise en cache d\u00e8s &#8230;<\/p>\n","protected":false},"author":193,"featured_media":48102,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[433,31],"topic":[998,986],"class_list":["post-48092","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-laravel","tag-php","topic-frameworks-php","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tout ce que vous devez savoir sur le cache de Laravel<\/title>\n<meta name=\"description\" content=\"Apprenez comment augmenter les performances et l&#039;\u00e9volutivit\u00e9 des logiciels en mettant en \u0153uvre et en manipulant la bonne strat\u00e9gie de mise en cache dans Laravel.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tout ce que vous devez savoir sur le cache de Laravel\" \/>\n<meta property=\"og:description\" content=\"Apprenez comment augmenter les performances et l&#039;\u00e9volutivit\u00e9 des logiciels en mettant en \u0153uvre et en manipulant la bonne strat\u00e9gie de mise en cache dans Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-30T09:06:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-03T02:58:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Solomon Eseme\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Apprenez comment augmenter les performances et l&#039;\u00e9volutivit\u00e9 des logiciels en mettant en \u0153uvre et en manipulant la bonne strat\u00e9gie de mise en cache dans Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@kaperskyguru\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Solomon Eseme\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/\"},\"author\":{\"name\":\"Solomon Eseme\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\"},\"headline\":\"Tout ce que vous devez savoir sur le cache de Laravel\",\"datePublished\":\"2021-08-30T09:06:45+00:00\",\"dateModified\":\"2023-11-03T02:58:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/\"},\"wordCount\":3773,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg\",\"keywords\":[\"laravel\",\"php\"],\"articleSection\":[\"D\u00e9veloppement web\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/\",\"name\":\"Tout ce que vous devez savoir sur le cache de Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg\",\"datePublished\":\"2021-08-30T09:06:45+00:00\",\"dateModified\":\"2023-11-03T02:58:11+00:00\",\"description\":\"Apprenez comment augmenter les performances et l'\u00e9volutivit\u00e9 des logiciels en mettant en \u0153uvre et en manipulant la bonne strat\u00e9gie de mise en cache dans Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Tout ce que vous devez savoir sur le cache de Laravel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tout ce que vous devez savoir sur le cache de Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\",\"name\":\"Solomon Eseme\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g\",\"caption\":\"Solomon Eseme\"},\"description\":\"I am a Software Engineer and Content Creator who is geared toward building high-performing and innovative products following best practices and industry standards. I also love writing about it at Masteringbackend.com. Follow me on Twitter, LinkedIn, and About Me\",\"sameAs\":[\"https:\/\/masteringbackend.com\",\"https:\/\/linkedin.com\/in\/solomoneseme\",\"https:\/\/x.com\/kaperskyguru\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/solomoneseme\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tout ce que vous devez savoir sur le cache de Laravel","description":"Apprenez comment augmenter les performances et l'\u00e9volutivit\u00e9 des logiciels en mettant en \u0153uvre et en manipulant la bonne strat\u00e9gie de mise en cache dans Laravel.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/","og_locale":"fr_FR","og_type":"article","og_title":"Tout ce que vous devez savoir sur le cache de Laravel","og_description":"Apprenez comment augmenter les performances et l'\u00e9volutivit\u00e9 des logiciels en mettant en \u0153uvre et en manipulant la bonne strat\u00e9gie de mise en cache dans Laravel.","og_url":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2021-08-30T09:06:45+00:00","article_modified_time":"2023-11-03T02:58:11+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg","type":"image\/jpeg"}],"author":"Solomon Eseme","twitter_card":"summary_large_image","twitter_description":"Apprenez comment augmenter les performances et l'\u00e9volutivit\u00e9 des logiciels en mettant en \u0153uvre et en manipulant la bonne strat\u00e9gie de mise en cache dans Laravel.","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg","twitter_creator":"@kaperskyguru","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Solomon Eseme","Dur\u00e9e de lecture estim\u00e9e":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/"},"author":{"name":"Solomon Eseme","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2"},"headline":"Tout ce que vous devez savoir sur le cache de Laravel","datePublished":"2021-08-30T09:06:45+00:00","dateModified":"2023-11-03T02:58:11+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/"},"wordCount":3773,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg","keywords":["laravel","php"],"articleSection":["D\u00e9veloppement web"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/","url":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/","name":"Tout ce que vous devez savoir sur le cache de Laravel","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg","datePublished":"2021-08-30T09:06:45+00:00","dateModified":"2023-11-03T02:58:11+00:00","description":"Apprenez comment augmenter les performances et l'\u00e9volutivit\u00e9 des logiciels en mettant en \u0153uvre et en manipulant la bonne strat\u00e9gie de mise en cache dans Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2021\/08\/laravel-caching.jpeg","width":1460,"height":730,"caption":"Tout ce que vous devez savoir sur le cache de Laravel"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/laravel-caching\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/fr\/sujets\/laravel\/"},{"@type":"ListItem","position":3,"name":"Tout ce que vous devez savoir sur le cache de Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2","name":"Solomon Eseme","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1c701993f8ff8c8df2a4c5664834a4e5?s=96&d=mm&r=g","caption":"Solomon Eseme"},"description":"I am a Software Engineer and Content Creator who is geared toward building high-performing and innovative products following best practices and industry standards. I also love writing about it at Masteringbackend.com. Follow me on Twitter, LinkedIn, and About Me","sameAs":["https:\/\/masteringbackend.com","https:\/\/linkedin.com\/in\/solomoneseme","https:\/\/x.com\/kaperskyguru"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/solomoneseme\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48092","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=48092"}],"version-history":[{"count":14,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48092\/revisions"}],"predecessor-version":[{"id":54457,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/48092\/revisions\/54457"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48092\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48092\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48092\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48092\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48092\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48092\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48092\/translations\/nl"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48092\/translations\/se"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/48092\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/48102"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=48092"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=48092"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=48092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}