{"id":44000,"date":"2021-08-30T16:36:35","date_gmt":"2021-08-30T14:36:35","guid":{"rendered":"https:\/\/kinsta.com\/?p=98920"},"modified":"2025-02-07T11:12:14","modified_gmt":"2025-02-07T14:12:14","slug":"cache-do-laravel","status":"publish","type":"post","link":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/","title":{"rendered":"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel"},"content":{"rendered":"<p>O cache \u00e9 essencial para alcan\u00e7ar um alto desempenho e escalabilidade. A implementa\u00e7\u00e3o da <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-cache\/\">estrat\u00e9gia de cache<\/a> adequada desde a fase de desenvolvimento \u00e9 fundamental para evitar APIs atrasadas e <a href=\"https:\/\/kinsta.com\/pt\/blog\/plugins-de-cache-wordpress\/\">tempos de carregamento de p\u00e1ginas<\/a> lentos. Laravel \u00e9 um dos frameworks PHP mais populares, portanto implementar a estrat\u00e9gia ideal de cache do Laravel \u00e9 indispens\u00e1vel para uma melhor experi\u00eancia do usu\u00e1rio e maior impacto nos neg\u00f3cios.<\/p>\n<p>Neste artigo, vamos explorar estrat\u00e9gias para implementar e manipular o cache do Laravel. Voc\u00ea aprender\u00e1 sobre como o cache do Laravel funciona, v\u00e1rias consultas de cache do Laravel e como voc\u00ea pode lidar com o cache em aplicativos Laravel.<\/p>\n<p>Voc\u00ea se beneficiar\u00e1 mais com este artigo se j\u00e1 tiver algum conhecimento b\u00e1sico sobre o seguinte:<\/p>\n<ul>\n<li>Conhecimentos de <a href=\"https:\/\/kinsta.com\/pt\/blog\/ferramentas-de-desenvolvimento-web\/\">desenvolvimento web<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-laravel\/\">Conhecimento b\u00e1sico do Laravel<\/a><\/li>\n<li>Construindo <a href=\"https:\/\/masteringbackend.com\/posts\/laravel-framework-the-ultimate-guide\">APIs com Laravel<\/a><\/li>\n<li><a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/cache\/cache-do-site\/#site-cache-expiration\">Compreens\u00e3o b\u00e1sica do <\/a><a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/cache\/cache-do-site\/#site-cache-expiration\">cache<\/a><\/li>\n<\/ul>\n<p>Vamos nessa!<\/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>Confira nosso <a href=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\">guia em v\u00eddeo<\/a> sobre o Cache Laravel<\/h3>\n<p class=\"p1\"><kinsta-video src=\"https:\/\/www.youtube.com\/watch?v=6eJMRMgn6mI\"><\/kinsta-video><\/p>\n<h2>Por que o cache \u00e9 importante?<\/h2>\n<p>Com o recente boom nos neg\u00f3cios da internet, diferentes empresas t\u00eam estat\u00edsticas mostrando como o tempo de carregamento do site e o baixo desempenho podem impactar fortemente o SEO, o envolvimento do usu\u00e1rio e as taxas de conversa\u00e7\u00e3o sem cache. E isso come\u00e7a com uma excelente estrat\u00e9gia de cache em vigor.<\/p>\n<p>Um <a href=\"https:\/\/kinsta.com\/pt\/aprenda\/velocidade-de-sites\/#slow-how-slow\">estudo on-line descobriu que<\/a> &#8220;1 segundo de tempo de atraso de carregamento custaria \u00e0 Amazon 1,6 bilh\u00f5es de d\u00f3lares em vendas por ano&#8221;.<\/p>\n<p>Outro <a href=\"https:\/\/www.thinkwithgoogle.com\/future-of-marketing\/digital-transformation\/the-google-gospel-of-speed-urs-hoelzle\/\">estudo do Google relatou<\/a>: &#8220;Nossa pesquisa mostra que se os resultados da pesquisa forem desacelerados por uma fra\u00e7\u00e3o de segundo, as pessoas pesquisam menos (a s\u00e9rio: Um <strong>atraso de 400ms <\/strong>leva a uma <strong>queda de 0,44 por cento <\/strong>no volume de pesquisas). E essa impaci\u00eancia n\u00e3o se limita apenas \u00e0 pesquisa: Quatro em cada cinco usu\u00e1rios da Internet ir\u00e3o embora se um v\u00eddeo parar durante o carregamento.&#8221;<\/p>\n<p>Uma leve lentid\u00e3o no tempo de carregamento da sua p\u00e1gina web pode ter um impacto maci\u00e7o na experi\u00eancia de seus usu\u00e1rios e na perda de fundos em geral.<\/p>\n<h2>O que \u00e9 cache do Laravel?<\/h2>\n<p>Laravel fornece uma implementa\u00e7\u00e3o robusta e f\u00e1cil de usar o cache e diferentes back-ends de cache. Com o cache Laravel, voc\u00ea pode alternar de forma eficiente e eficaz entre muitos mecanismos de cache sem escrever nenhum c\u00f3digo.<\/p>\n<p>Voc\u00ea pode encontrar a configura\u00e7\u00e3o do cache Laravel dentro da pasta <code><strong>config\/cache.php<\/strong><\/code>, embora voc\u00ea provavelmente s\u00f3 precisar\u00e1 do arquivo <strong>.env <\/strong>para alternar entre diferentes back-ends de cache.<\/p>\n<p>O cache Laravel tamb\u00e9m fornece muitos m\u00e9todos pr\u00e1ticos que podemos usar para implementar diferentes estrat\u00e9gias de cache.<\/p>\n\n<h3>Drivers de cache do Laravel e compara\u00e7\u00f5es<\/h3>\n<p>O cache Laravel fornece grandes back-end de cache e drivers. Dependendo do seu caso de uso, voc\u00ea pode alternar entre eles para melhorar o desempenho do seu aplicativo e o tempo de carregamento.<\/p>\n<p>Dito isto, o cache Laravel tamb\u00e9m oferece uma forma perfeita de criar um back-end personalizado e us\u00e1-lo com o cache Laravel, mas apenas se a lista abaixo n\u00e3o se adequar ao seu caso de uso.<\/p>\n<p>A seguir vamos falar sobre a lista de todos os back-ends fornecidos pelo cache do Laravel.<\/p>\n<h4>1. file<\/h4>\n<p>O driver <strong>file <\/strong>\u00e9 o back-end padr\u00e3o usado pelo cache do Laravel quando nenhum driver \u00e9 especificado no arquivo <strong>.env<\/strong>.<\/p>\n<p>O back-end do <strong>file <\/strong>\u00e9 projetado para armazenar os dados em cache em um arquivo criptografado encontrado sob <code><strong>storage\/framework\/<\/strong><\/code>. Laravel cria um arquivo criptografado com os dados e a chave de cache quando novos dados s\u00e3o armazenados em cache. O mesmo acontece quando o usu\u00e1rio est\u00e1 tentando recuperar o conte\u00fado. O cache Laravel pesquisa na pasta a chave especificada e, se encontrada, retorna o conte\u00fado.<\/p>\n<p>Embora o back-end do <strong>file <\/strong>funcione sem falhas e poupe tempo na instala\u00e7\u00e3o e configura\u00e7\u00e3o de drivers externos, ele tamb\u00e9m pode ser <a href=\"https:\/\/kinsta.com\/developer-roles\/development-at-kinsta\/\">perfeito para o desenvolvimento<\/a>. \u00c9 mais r\u00e1pido do que acessar os dados diretamente do servidor de banco de dados.<\/p>\n<p>Para usar o driver do <strong>file<\/strong>, adicione o seguinte c\u00f3digo ao seu arquivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=file<\/code><\/pre>\n<h4>2. A<strong>rray <\/strong><\/h4>\n<p>O driver <strong>array <\/strong>\u00e9 um back-end de cache perfeito para executar testes autom\u00e1ticos e \u00e9 configurado facilmente com Github Actions, Jenkins, etc.<\/p>\n<p>O back-end do <strong>array <\/strong>armazena os dados em cache em um array em PHP e n\u00e3o requer que voc\u00ea instale ou configure nenhum driver. Ele funciona perfeitamente para testes automatizados, e \u00e9 um pouco mais r\u00e1pido que o back-end do cache de arquivos.<\/p>\n<p>Para usar o driver <strong>array <\/strong>, adicione o seguinte c\u00f3digo ao seu arquivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=array<\/code><\/pre>\n<h4>3. Database<\/h4>\n<p>Ao usar o driver <strong>database<\/strong>, os dados s\u00e3o armazenados na mem\u00f3ria para o processo PHP atual. Portanto, voc\u00ea precisa criar uma tabela de banco de dados para armazenar os dados em cache. Al\u00e9m disso, o cache de <a href=\"https:\/\/kinsta.com\/pt\/blog\/banco-de-dados-wordpress\/\">banco de dados<\/a> melhora a escalabilidade, distribuindo a carga de trabalho da consulta a partir do back-end para m\u00faltiplos frontends.<\/p>\n<p>Voc\u00ea pode executar este comando Artisan \u2014 <code>php artisan cache:table<\/code> \u2014 para auto-gerar o esquema de base de dados necess\u00e1rio para o driver database.<\/p>\n<p>O driver <strong>database<\/strong><strong>\u00a0<\/strong>\u00e9 usado principalmente em situa\u00e7\u00f5es em que voc\u00ea pode instalar qualquer software na sua plataforma de hospedagem.<\/p>\n<p>Por exemplo, digamos que voc\u00ea est\u00e1 usando um plano de hospedagem gratuito com op\u00e7\u00f5es limitadas. Para isso, sugerimos ficar com o driver <strong>file <\/strong>porque o driver <strong>database<\/strong><strong>\u00a0<\/strong>\u00e9, na maioria dos casos, o ponto mais fraco do seu aplicativo, e tentar empurrar mais dados para esse gargalo n\u00e3o \u00e9 uma boa id\u00e9ia.<\/p>\n<p>Para usar o driver <strong>database<\/strong>, adicione o seguinte c\u00f3digo ao seu arquivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=database<\/code><\/pre>\n<h4>4. Redis<\/h4>\n<p>O driver <strong>redis <\/strong>usa a tecnologia de cache baseada na mem\u00f3ria chamada <a href=\"https:\/\/kinsta.com\/pt\/docs\/hospedagem-de-wordpress\/cache\/cache-redis\/\">Redis<\/a><strong>. <\/strong>Embora seja r\u00e1pido em compara\u00e7\u00e3o com os outros drivers de cache discutidos acima, ele requer a instala\u00e7\u00e3o e configura\u00e7\u00e3o de tecnologia externa.<\/p>\n<p>Para usar o driver <strong>redis<\/strong>, adicione o seguinte c\u00f3digo ao seu arquivo <strong>.env<\/strong>:<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=redis<\/code><\/pre>\n<h4>5. Memcached<\/h4>\n<p>Memcached \u00e9 conhecida por ser a mais popular loja de cache baseada em mem\u00f3ria. Se voc\u00ea n\u00e3o se importa com um pouco de manuten\u00e7\u00e3o extra do servidor (ter que instalar e manter servi\u00e7os adicionais), os drivers de cache baseados em mem\u00f3ria Memcached s\u00e3o \u00f3timas op\u00e7\u00f5es.<\/p>\n<p>O uso do driver <strong>memcached <\/strong>requer que o <a href=\"https:\/\/pecl.php.net\/package\/memcached\">pacote PECL Memcached<\/a> seja instalado.<\/p>\n<p>Para usar o driver <strong>memcached<\/strong>, adicione o seguinte c\u00f3digo ao seu arquivo <strong>.env<\/strong>.<\/p>\n<pre><code class=\"language-markdown\">CACHE_DRIVER=memcached <\/code><\/pre>\n<p>O <a href=\"https:\/\/www.georgebuckingham.com\/laravel-cache-driver-performance\/\">melhor driver de cache para usar e o desempenho<\/a> do driver de cache dependem do caso de uso do seu projeto e da quantidade de dados a serem recuperados.<\/p>\n<h3>Uso e m\u00e9todos do cache do Laravel<\/h3>\n<p>O cache do Laravel fornece muitos m\u00e9todos valiosos usados para implementar muitas estrat\u00e9gias de cache.<\/p>\n<p>Abaixo listaremos e explicaremos os diferentes m\u00e9todos (categorizados de acordo com o caso de uso):<\/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>increment()<\/code><\/li>\n<li><code>decrement()<\/code><\/li>\n<li><code>forever()<\/code><\/li>\n<li><code>forget()<\/code><\/li>\n<li><code>flush()<\/code><\/li>\n<li><code>remember()<\/code><\/li>\n<li><code>rememberForever()<\/code><\/li>\n<\/ol>\n<h4>Armazenamento de Cache<\/h4>\n<p>O armazenamento de novos dados no cache \u00e9 muito simples usando os diferentes m\u00e9todos, cada um com v\u00e1rios casos de uso.<\/p>\n<h5>1. Cache::put()<\/h5>\n<p>Este m\u00e9todo aceita tr\u00eas par\u00e2metros-chave, <strong>duration <\/strong>e <strong>data<\/strong><strong>\u00a0<\/strong>a serem armazenados em cache.<\/p>\n<p>Vamos dar uma olhada em como usar <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>O c\u00f3digo acima ir\u00e1 armazenar o post com a <strong>chave <\/strong>\u00fanica por 20 segundos.<\/p>\n<h5>2. Cache::putMany()<\/h5>\n<p>Este m\u00e9todo armazena um conjunto de dados no cache de uma s\u00f3 vez com a mesma dura\u00e7\u00e3o. Ele aceita dois par\u00e2metros que s\u00e3o <strong>data<\/strong><strong>\u00a0<\/strong>e <strong>seconds<\/strong>.<\/p>\n<p>Vamos dar uma olhada em como usar <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>Este m\u00e9todo \u00e9 outra excelente forma de implementar a estrat\u00e9gia de cache Aside. O m\u00e9todo <code><strong>Cache::remember()<\/strong><\/code> aceita tr\u00eas par\u00e2metros, uma <strong>key<\/strong>,\u00a0<strong>seconds<\/strong> e\u00a0<strong>closure<\/strong><strong>\u00a0<\/strong>usados para recuperar dados da base de dados se n\u00e3o forem encontrados.<\/p>\n<p>Vamos dar uma olhada em como usar <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  return Post::all();\n});\n<\/code><\/pre>\n<p>O cache do Laravel tamb\u00e9m tem o m\u00e9todo <code><strong>Cache::rememberForever()<\/strong><\/code>, que n\u00e3o aceita o par\u00e2metro <strong>seconds<\/strong><strong>\u00a0<\/strong>e armazena o <strong>data <\/strong>para sempre.<\/p>\n<h5>4. Cache::forever()<\/h5>\n<p>Este m\u00e9todo armazena os dados no servidor cache para sempre sem especificar qualquer dura\u00e7\u00e3o. Voc\u00ea pode implement\u00e1-lo com o seguinte c\u00f3digo:<\/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>Recuperando dados de cache<\/h4>\n<p>Os m\u00e9todos nesta categoria recuperam os dados de cache. Alguns destes m\u00e9todos podem comportar-se de forma diferente, dependendo se os dados s\u00e3o encontrados ou n\u00e3o.<\/p>\n<h5>1. Cache::get()<\/h5>\n<p>Este m\u00e9todo recupera dados do servidor de cache com uma chave espec\u00edfica. Voc\u00ea pode recuperar um item usando o c\u00f3digo abaixo:<\/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>Este m\u00e9todo \u00e9 similar ao <code><strong>Cache::putMany()<\/strong><\/code>. Ele \u00e9 usado para recuperar um array de dados em cache de uma vez usando um array das chaves em cache. Voc\u00ea pode recuperar um array de cache usando o seguinte c\u00f3digo:<\/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>Voc\u00ea tamb\u00e9m pode usar este m\u00e9todo para recuperar dados em cache, verificando o servidor de cache usando a chave fornecida. Se os dados estiverem armazenados no cache, ele os recuperar\u00e1. Caso contr\u00e1rio, ele recuperar\u00e1 os dados do servidor de banco de dados e os armazenar\u00e1 em cache. Este m\u00e9todo \u00e9 o mesmo que o m\u00e9todo <code><strong>Cache::rememberForever()<\/strong><\/code> com apenas um par\u00e2metro de <strong>seconds<\/strong>\u00a0extra no m\u00e9todo <strong><code>Cache::remember()<\/code><\/strong>.<\/p>\n<h4>Remo\u00e7\u00e3o de itens do cache<\/h4>\n<p>Os m\u00e9todos sob esta categoria s\u00e3o usados para remover itens de cache, agrupados por funcionalidade.<\/p>\n<h5>1. Cache::forget()<\/h5>\n<p>Este m\u00e9todo remove um \u00fanico item do cache com um par\u00e2metro-chave especificado:<\/p>\n<pre><code class=\"language-php\">Cache::forget('key');<\/code><\/pre>\n<h5>2. Cache::flush()<\/h5>\n<p>Este m\u00e9todo remove um \u00fanico item do cache com um par\u00e2metro chave especificado:<\/p>\n<pre><code class=\"language-php\">Cache::flush();<\/code><\/pre>\n<h4>Valores de cache de incremento e desincremento<\/h4>\n<p>Voc\u00ea pode ajustar os valores de um valor inteiro armazenado no seu cache usando os m\u00e9todos de incremento e decremento, respectivamente:<\/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>O cache do Laravel tem muitos grandes m\u00e9todos que n\u00e3o discutimos acima, mas os m\u00e9todos acima s\u00e3o populares. Voc\u00ea pode obter uma vis\u00e3o geral de todos os m\u00e9todos na <a href=\"https:\/\/laravel.com\/docs\/8.x\/cache#cache-usage\">documenta\u00e7\u00e3o oficial do cache do Laravel<\/a>.<\/p>\n<h3>Comandos de cache explicados<\/h3>\n<p>Laravel fornece comandos para tornar o trabalho com o cache Laravel f\u00e1cil e r\u00e1pido. Abaixo est\u00e1 a lista de todos os <a href=\"https:\/\/kinsta.com\/pt\/blog\/comandos-ssh\/\">comandos<\/a> e suas funcionalidades.<\/p>\n<h4>Limpae o cache do Laravel<\/h4>\n<p>Este comando \u00e9 usado para limpar o cache do Laravel antes mesmo de expirar usando o terminal\/console. Por exemplo, voc\u00ea pode executar o seguinte comando:<\/p>\n<pre><code class=\"language-bash\">php artisan cache:clear<\/code><\/pre>\n<h4>Limpar o cache de rotas<\/h4>\n<p>Este comando \u00e9 usado para limpar o cache de rotas do seu aplicativo Laravel. Por exemplo, execute o seguinte comando para limpar o seu cache de rotas:<\/p>\n<pre><code class=\"language-bash\">php artisan config:cache<\/code><\/pre>\n<h4>Excluir arquivos de visualiza\u00e7\u00e3o compilados<\/h4>\n<p>Este comando \u00e9 usado para limpar os arquivos de visualiza\u00e7\u00e3o compilados do seu aplicativo Laravel. Voc\u00ea pode consegui-lo com o seguinte comando:<\/p>\n<pre><code class=\"language-php\">php artisan view:clear<\/code><\/pre>\n<h4>Tabela do banco de dados<\/h4>\n<p>Ao usar o driver do banco de dados, voc\u00ea precisa criar um esquema de banco de dados chamado <strong>cache <\/strong>para armazenar os dados do cache. Voc\u00ea tamb\u00e9m pode usar o comando Artisan para gerar uma migra\u00e7\u00e3o com o esquema apropriado:<\/p>\n<pre><code class=\"language-bash\">php artisan cache:table<\/code><\/pre>\n<h2>Estrat\u00e9gias de cache do Laravel<\/h2>\n<p>Dependendo do caso de uso do seu aplicativo e da estrutura de dados, \u00e9 prov\u00e1vel que v\u00e1rias estrat\u00e9gias de cache diferentes estejam dispon\u00edveis para voc\u00ea. Voc\u00ea pode at\u00e9 mesmo criar uma estrat\u00e9gia personalizada para atender \u00e0s suas necessidades. Abaixo veremos a lista de estrat\u00e9gias de cache populares que voc\u00ea pode implementar em seu projeto Laravel.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Kinsta permite que voc\u00ea execute Laravel para os seus produtos, mesmo que n\u00e3o seja oficialmente suportado por nossa equipe.<\/p>\n<\/aside>\n\n<h3>writeThrough<\/h3>\n<p>Na estrat\u00e9gia <strong>writeThrough<\/strong>, o servidor de cache fica entre os pedidos e o servidor de banco de dados, fazendo com que cada opera\u00e7\u00e3o de <strong>grava\u00e7\u00e3o <\/strong>passe pelo servidor de cache antes de ir para o servidor de banco de dados. Assim, a estrat\u00e9gia de cache <strong>writeThrough <\/strong>\u00e9 semelhante \u00e0 estrat\u00e9gia <strong>readThrough.<\/strong><\/p>\n<p>Voc\u00ea pode implementar esta estrat\u00e9gia com o cache do Laravel com o seguinte c\u00f3digo:<\/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($cachedData)\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>Esta estrat\u00e9gia \u00e9 uma forma mais avan\u00e7ada de implementar a estrat\u00e9gia <strong>writeThrough<\/strong>, acrescentando atrasos nas opera\u00e7\u00f5es de escrita.<\/p>\n<p>Voc\u00ea tamb\u00e9m pode chamar isso de estrat\u00e9gia de <strong>writeBehind <\/strong>devido ao atraso no tempo aplicado ao servidor de cache antes de escrever os dados para o servidor de banco de dados.<\/p>\n<p>Voc\u00ea pode implementar esta estrat\u00e9gia com o cache do Laravel com o seguinte c\u00f3digo:<\/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      return $cacheData;\n  }\n\n\/\/ Stores new data to temp Array for updating\n  private function storeForUpdates($data){\n    $tempData = {};\n    $tempData['duration'] = this.getMinutesInMilli();\n    $tempData['data'] = data;\n    array_push($tempDataToFlush, data);\n  }\n\n\/\/ Converts minutes to millisecond\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 Database 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>O m\u00e9todo <strong>writeBack <\/strong>chama para o m\u00e9todo <strong>writeThrough<\/strong>, que armazena os dados no servidor de cache e um array tempor\u00e1rio para ser empurrado posteriormente para o servidor de banco de dados usando o m\u00e9todo <strong>updateDatabaseServer. <\/strong>Voc\u00ea pode configurar um <a href=\"https:\/\/masteringbackend.com\/posts\/laravel-cron-the-definitive-guide\">CronJob<\/a> para atualizar o servidor de banco de dados a cada cinco minutos.<\/p>\n<h3>writeAround<\/h3>\n<p>Esta estrat\u00e9gia permite que todas as opera\u00e7\u00f5es de <strong>escrita<\/strong> v\u00e3o diretamente para o servidor de banco de dados sem atualizar o servidor de cache &#8211; somente durante as opera\u00e7\u00f5es de <strong>leitura <\/strong>\u00e9 que o servidor de cache \u00e9 atualizado.<\/p>\n<p>Assumindo que um usu\u00e1rio deseja criar um novo <strong>Article<\/strong>, o <strong>Article<\/strong>armazena diretamente no servidor do banco de dados. Quando o usu\u00e1rio deseja ler o conte\u00fado do <strong>Article <\/strong>pela primeira vez, o <strong>Article <\/strong>\u00e9 recuperado do servidor do banco de dados e atualiza o servidor de cache para solicita\u00e7\u00f5es subseq\u00fcentes.<\/p>\n<p>Voc\u00ea pode implementar esta estrat\u00e9gia com o cache do Laravel com o seguinte c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">public function writeAround($data) {\n    $storedData = Database::create($data);\n    return $storedData;\n}\n\npublic function readOperation($key, $minutes){\n    $cacheData = Cache::remember($key, $minutes, function() {\n      return Article::all();\n    })\n    return $cacheData;\n}\n<\/code><\/pre>\n<h3>Cache aside (Carregamento pregui\u00e7oso)<\/h3>\n<p>Nesta estrat\u00e9gia, o banco de dados \u00e9 posto de lado e o aplicativo solicita primeiro os dados do servidor de cache. Ent\u00e3o, se houver um acerto (encontrado), os dados s\u00e3o devolvidos ao cliente. Caso contr\u00e1rio, se houver um erro (n\u00e3o encontrado), o servidor de banco de dados solicita os dados e atualiza o servidor de cache para solicita\u00e7\u00f5es subseq\u00fcentes.<\/p>\n<p>Voc\u00ea pode implementar esta estrat\u00e9gia com o cache do Laravel com o seguinte c\u00f3digo:<\/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      return $data;\n  }\n}<\/code><\/pre>\n<p>O c\u00f3digo acima mostra a implementa\u00e7\u00e3o do cache Aside Strategy, que \u00e9 equivalente \u00e0 implementa\u00e7\u00e3o do m\u00e9todo <strong>Cache::remember<\/strong>.<\/p>\n<h3>Read through<\/h3>\n<p>Esta estrat\u00e9gia \u00e9 o oposto direto da estrat\u00e9gia do cache Aside. Nesta estrat\u00e9gia, o Servidor de cache fica entre o Pedido do Cliente e o Servidor de Base de Dados.<\/p>\n<p>As solicita\u00e7\u00f5es v\u00e3o diretamente para o servidor de cache, e o servidor de cache \u00e9 respons\u00e1vel por recuperar os dados do <a href=\"https:\/\/kinsta.com\/pt\/blog\/instalar-php\/\">servidor de banco de dados<\/a> se n\u00e3o forem encontrados no servidor de cache.<\/p>\n<p>Voc\u00ea pode implementar esta estrat\u00e9gia com o cache do Laravel com o seguinte c\u00f3digo:<\/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    return $DBdata;\n}<\/code><\/pre>\n<p>A\u00ed est\u00e1! Agora discutimos algumas estrat\u00e9gias populares de cache para o seu pr\u00f3ximo aplicativo Laravel. Lembre-se, voc\u00ea pode at\u00e9 usar uma estrat\u00e9gia de cache personalizada que melhor se adapte aos requisitos do seu projeto.<\/p>\n<h2>Cache da interface do usu\u00e1rio (UI) de um aplicativo Laravel<\/h2>\n<p>O cache da interface do usu\u00e1rio de um aplicativo Laravel \u00e9 um conceito conhecido como Full Page Cache (FPC). Este termo se refere ao processo de cache da resposta HTML de um aplicativo.<\/p>\n<p>\u00c9 excelente para aplicativos onde os dados HTML din\u00e2micos n\u00e3o mudam com frequ\u00eancia. Voc\u00ea pode fazer o cache da resposta HTML para uma resposta geral e uma renderiza\u00e7\u00e3o mais r\u00e1pida do HTML.<\/p>\n<p>N\u00f3s podemos implementar o FPC com a seguinte linha de c\u00f3digo:<\/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            return $cachedData;           \n        }  \n    }\n}<\/code><\/pre>\n<p>\u00c0 primeira vista, voc\u00ea deve ter notado que n\u00f3s verificamos se essa p\u00e1gina de <strong>articles_index<\/strong>\u00a0j\u00e1 existe no nosso servidor cache. Ent\u00e3o retornamos a p\u00e1gina renderizando-a com os m\u00e9todos <strong>view() <\/strong>e <strong>render() <\/strong>do Laravel.<\/p>\n<p>Caso contr\u00e1rio, n\u00f3s renderizamos a p\u00e1gina e armazenamos a sa\u00edda no nosso servidor de cache para pedidos subsequentes antes de devolver a p\u00e1gina renderizada ao navegador.<\/p>\n<h2>Construir um aplicativo Laravel<\/h2>\n<p>Agora vamos aplicar o que aprendemos at\u00e9 agora, criando um novo projeto Laravel e implementando o cache Laravel.<\/p>\n<p>Se voc\u00ea ainda n\u00e3o usou Laravel, voc\u00ea pode ler <a href=\"https:\/\/kinsta.com\/pt\/blog\/o-que-e-laravel\/\">o que Laravel \u00e9<\/a> e ver a nossa lista de <a href=\"https:\/\/kinsta.com\/pt\/blog\/tutoriais-laravel\/\">excelentes tutoriais de Laravel<\/a> para come\u00e7ar.<\/p>\n<h3>Configurando o Laravel<\/h3>\n<p>Primeiro, vamos criar uma nova inst\u00e2ncia de Laravel usando o comando abaixo. Voc\u00ea pode consultar a documenta\u00e7\u00e3o oficial para mais informa\u00e7\u00f5es.<\/p>\n<p>Abra seu console e navegue at\u00e9 onde voc\u00ea armazena seus projetos PHP antes de executar os comandos abaixo. Certifique-se de ter o <a href=\"https:\/\/getcomposer.org\/\">Composer<\/a> instalado e configurado corretamente.<\/p>\n<pre><code class=\"language-bash\">composer create-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>Configura\u00e7\u00e3o e alimenta\u00e7\u00e3o do banco de dados<\/h3>\n<p>Em seguida, criaremos nossa base de dados, em um novo modelo de <strong>Article <\/strong>e semearemos 500 pontos de dados falsos para testes.<\/p>\n<p>Abra o seu <a href=\"https:\/\/kinsta.com\/pt\/blog\/adminer\/\">cliente de base de dados<\/a> e crie uma nova base de dados. Faremos o mesmo com o nome <strong>fast_blog_app_db <\/strong>e ent\u00e3o preencheremos nosso arquivo <strong>.env<\/strong> com as informa\u00e7\u00f5es de identifica\u00e7\u00e3o do banco de dados:<\/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 HERE\nDB_PASSWORD=\/\/DB PASSWORD HERE\n<\/code><\/pre>\n<p>A seguir, vamos executar o seguinte comando para criar a migra\u00e7\u00e3o e o modelo de <strong>Article <\/strong>simultaneamente:<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Article -m<\/code><\/pre>\n<p>Abra o <code>database\/migrations\/xxx-create-articles-xxx.php<\/code> e cole no seguinte c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse 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>A seguir, execute o comando abaixo para criar um novo seeder:<\/p>\n<pre><code class=\"language-bash\">php artisan make:seeder ArticleSeeder<\/code><\/pre>\n<p>Abra o arquivo seeder rec\u00e9m-criado encontrado em <code>database\/seeders\/ArticleSeeder.php<\/code> e cole no c\u00f3digo a seguir:<\/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 the database 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>Abra o arquivo <strong>DatabaseSeeder.php <\/strong>no mesmo diret\u00f3rio e adicione o seguinte c\u00f3digo:<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace Database\\Seeders;\nuse Illuminate\\Database\\Seeder;\nclass DatabaseSeeder extends Seeder\n{\n    \/**\n     * Seed the application's database.\n     *\n     * @return void\n     *\/\n    public function run()\n    {\n        $this-&gt;call(ArticleSeeder::class);\n    }\n}<\/code><\/pre>\n<p>A seguir, execute o comando abaixo para criar uma nova f\u00e1brica:<\/p>\n<pre><code class=\"language-bash\">php artisan make:factory ArticleFactory<\/code><\/pre>\n<p>Abra o arquivo de f\u00e1brica rec\u00e9m-constru\u00eddo encontrado em <code>database\/factories\/ArticleFactory.php<\/code> e cole no seguinte c\u00f3digo:<\/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;paragraph(20)\n        ];\n    }\n}<\/code><\/pre>\n<p>Agora, execute o comando abaixo para migrar o nosso schema\u00a0rec\u00e9m-criado e tamb\u00e9m semear os nossos dados falsos para testes:<\/p>\n<pre><code class=\"language-bash\">php artisan migrate --seed<\/code><\/pre>\n<h3>Criar o controlador de artigos<\/h3>\n<p>Em seguida, vamos criar o nosso controlador e configurar as nossas rotas para lidar com o nosso pedido e recuperar os dados usando o modelo acima.<\/p>\n<p>Execute o seguinte comando para criar um novo <strong>ArticlesController <\/strong>dentro da pasta <code>app\/Http\/Controllers<\/code> :<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller ArticlesController --resource<\/code><\/pre>\n<p>Abra o arquivo e adicione o seguinte c\u00f3digo \u00e0 classe:<\/p>\n<pre><code class=\"language-php\">\/\/ Returns all 500 articles with Caching\npublic function index() {\n  return Cache::remember('articles', 60, function () {\n      return Article::all();\n  });\n}\n\n\/\/ Returns all 500 without Caching \npublic function allWithoutCache() {\n  return Article::all();\n}<\/code><\/pre>\n<p>Depois disso, abra o arquivo <strong>api.php <\/strong>encontrado dentro das <code>routes\/<\/code> pasta e cole no c\u00f3digo a seguir para criar um endpoint que possamos chamar para recuperar nossos dados:<\/p>\n<pre><code class=\"language-php\">Route::get('\/articles', 'ArticlesController@index');\n\nRoute::get('\/articles\/withoutcache', 'ArticlesController@allWithoutcache');<\/code><\/pre>\n<h3>Testando o desempenho<\/h3>\n<p>Finalmente, vamos <a href=\"https:\/\/kinsta.com\/pt\/blog\/monitoramento-desempenho-aplicativos\/\">testar o desempenho<\/a> da resposta do nosso aplicativo com ou sem a implementa\u00e7\u00e3o do cache Laravel.<\/p>\n<p>Esta captura de tela mostra o tempo de resposta do API com cache implementado:<\/p>\n<figure id=\"attachment_99464\" aria-describedby=\"caption-attachment-99464\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/laravel-api-response-time-cache.png\"><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=\"Tempo de resposta Laravel API com cache.\" width=\"1024\" height=\"583\"><\/a><figcaption id=\"caption-attachment-99464\" class=\"wp-caption-text\">Tempo de resposta Laravel API com cache.<\/figcaption><\/figure>\n<p>A captura de tela a seguir mostra o tempo de resposta do API sem cache implementado &#8211; note que o tempo de resposta aumentou sobre a inst\u00e2ncia em cache em mais de <strong>5.000%<\/strong>:<\/p>\n<figure id=\"attachment_99465\" aria-describedby=\"caption-attachment-99465\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/kinsta.com\/wp-content\/uploads\/2021\/07\/laravel-api-response-time-no-cache.png\"><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=\"Tempo de resposta Laravel API sem cache.\" width=\"1024\" height=\"584\"><\/a><figcaption id=\"caption-attachment-99465\" class=\"wp-caption-text\">Tempo de resposta Laravel API sem cache.<\/figcaption><\/figure>\n\n<h2>Resumo<\/h2>\n<p>Exploramos v\u00e1rias estrat\u00e9gias para implementar e manipular o cache do Laravel, construindo um novo projeto, comparando as suas respostas e comparando os resultados.<\/p>\n<p>Voc\u00ea tamb\u00e9m aprendeu a usar os diferentes m\u00e9todos e drivers de cache do Laravel. Al\u00e9m disso, implementamos diferentes estrat\u00e9gias de cache para ajud\u00e1-lo a descobrir qual delas pode ser a mais adequada para voc\u00ea.<\/p>\n<p>Para saber mais sobre o Laravel, explore nossa sele\u00e7\u00e3o dos <a href=\"https:\/\/kinsta.com\/pt\/blog\/tutoriais-laravel\/\">melhores tutoriais do Laravel<\/a> escolhidos a dedo. Seja voc\u00ea um iniciante ou um desenvolvedor avan\u00e7ado do Laravel, sempre h\u00e1 algo para todos!<\/p>\n<p><em>Se voc\u00ea ainda tiver d\u00favidas sobre o cache do Laravel, por favor nos avise na se\u00e7\u00e3o de coment\u00e1rios.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O cache \u00e9 essencial para alcan\u00e7ar um alto desempenho e escalabilidade. A implementa\u00e7\u00e3o da estrat\u00e9gia de cache adequada desde a fase de desenvolvimento \u00e9 fundamental para &#8230;<\/p>\n","protected":false},"author":193,"featured_media":44003,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[416,32],"topic":[996,984],"class_list":["post-44000","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>Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel<\/title>\n<meta name=\"description\" content=\"Aprenda como aumentar o desempenho e a escalabilidade do software implementando e manipulando a estrat\u00e9gia de cache correta no 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\/pt\/blog\/cache-do-laravel\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel\" \/>\n<meta property=\"og:description\" content=\"Aprenda como aumentar o desempenho e a escalabilidade do software implementando e manipulando a estrat\u00e9gia de cache correta no Laravel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstapt\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-30T14:36:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-07T14:12:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/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=\"Aprenda como aumentar o desempenho e a escalabilidade do software implementando e manipulando a estrat\u00e9gia de cache correta no Laravel.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@kaperskyguru\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_pt\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Solomon Eseme\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo estimado de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/\"},\"author\":{\"name\":\"Solomon Eseme\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\"},\"headline\":\"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel\",\"datePublished\":\"2021-08-30T14:36:35+00:00\",\"dateModified\":\"2025-02-07T14:12:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/\"},\"wordCount\":3299,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg\",\"keywords\":[\"laravel\",\"php\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/\",\"url\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/\",\"name\":\"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg\",\"datePublished\":\"2021-08-30T14:36:35+00:00\",\"dateModified\":\"2025-02-07T14:12:14+00:00\",\"description\":\"Aprenda como aumentar o desempenho e a escalabilidade do software implementando e manipulando a estrat\u00e9gia de cache correta no Laravel.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg\",\"width\":1460,\"height\":730,\"caption\":\"Tudo o que voc\u00ea precisa saber sobre o Laravel Caching\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/pt\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/pt\/topicos\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/pt\/#website\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/pt\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/pt\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/pt\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstapt\/\",\"https:\/\/x.com\/kinsta_pt\",\"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\/pt\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2\",\"name\":\"Solomon Eseme\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\/\/kinsta.com\/pt\/#\/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\/pt\/blog\/author\/solomoneseme\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel","description":"Aprenda como aumentar o desempenho e a escalabilidade do software implementando e manipulando a estrat\u00e9gia de cache correta no 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\/pt\/blog\/cache-do-laravel\/","og_locale":"pt_PT","og_type":"article","og_title":"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel","og_description":"Aprenda como aumentar o desempenho e a escalabilidade do software implementando e manipulando a estrat\u00e9gia de cache correta no Laravel.","og_url":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstapt\/","article_published_time":"2021-08-30T14:36:35+00:00","article_modified_time":"2025-02-07T14:12:14+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg","type":"image\/jpeg"}],"author":"Solomon Eseme","twitter_card":"summary_large_image","twitter_description":"Aprenda como aumentar o desempenho e a escalabilidade do software implementando e manipulando a estrat\u00e9gia de cache correta no Laravel.","twitter_image":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg","twitter_creator":"@kaperskyguru","twitter_site":"@kinsta_pt","twitter_misc":{"Escrito por":"Solomon Eseme","Tempo estimado de leitura":"17 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/"},"author":{"name":"Solomon Eseme","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2"},"headline":"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel","datePublished":"2021-08-30T14:36:35+00:00","dateModified":"2025-02-07T14:12:14+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/"},"wordCount":3299,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg","keywords":["laravel","php"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/","url":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/","name":"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel","isPartOf":{"@id":"https:\/\/kinsta.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg","datePublished":"2021-08-30T14:36:35+00:00","dateModified":"2025-02-07T14:12:14+00:00","description":"Aprenda como aumentar o desempenho e a escalabilidade do software implementando e manipulando a estrat\u00e9gia de cache correta no Laravel.","breadcrumb":{"@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#primaryimage","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2021\/08\/laravel-caching.jpeg","width":1460,"height":730,"caption":"Tudo o que voc\u00ea precisa saber sobre o Laravel Caching"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/pt\/blog\/cache-do-laravel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/pt\/topicos\/laravel\/"},{"@type":"ListItem","position":3,"name":"Tudo o que Voc\u00ea Precisa Saber Sobre o Cache do Laravel"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/pt\/#website","url":"https:\/\/kinsta.com\/pt\/","name":"Kinsta\u00ae","description":"Solu\u00e7\u00f5es de hospedagem Premium, r\u00e1pida e segura","publisher":{"@id":"https:\/\/kinsta.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/pt\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/pt\/wp-content\/uploads\/sites\/3\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstapt\/","https:\/\/x.com\/kinsta_pt","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\/pt\/#\/schema\/person\/51c9c77fa35cf1ef9a46308358441ab2","name":"Solomon Eseme","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/kinsta.com\/pt\/#\/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\/pt\/blog\/author\/solomoneseme\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/44000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/users\/193"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/comments?post=44000"}],"version-history":[{"count":12,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/44000\/revisions"}],"predecessor-version":[{"id":47989,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/posts\/44000\/revisions\/47989"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44000\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44000\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44000\/translations\/it"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44000\/translations\/es"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44000\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44000\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44000\/translations\/nl"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44000\/translations\/se"},{"href":"https:\/\/kinsta.com\/pt\/wp-json\/kinsta\/v1\/posts\/44000\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media\/44003"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/media?parent=44000"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/tags?post=44000"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/pt\/wp-json\/wp\/v2\/topic?post=44000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}