Cache de dados em PHP: primeiros socorros para o seu servidor
\n\nImagine: você entra no seu site favorito e ele demora uma eternidade para carregar. Familiar? Na maioria das vezes, a causa não é uma hospedagem fraca nem um design "pesado", mas sim o fato de o servidor executar o mesmo trabalho repetidamente. Ele acessa o banco de dados novamente, remonta o código HTML, recalcula as estatísticas.
\n\nA solução para esse problema é o cache em PHP. É como preparar o almoço para a semana inteira: você gasta tempo uma vez e depois só esquenta. No mundo do desenvolvimento web, isso se chama "cache de dados". Um cache PHP bem configurado pode acelerar o site de 10 a 50 vezes e reduzir a carga no servidor ao mínimo.
\n\nNeste artigo, vamos explorar quais tipos de cache existem, como implementá-los com PHP e quando escolher cada ferramenta. Vamos lá!
\n\nPor que o cache é indispensável para qualquer projeto PHP?
\n\nQualquer site dinâmico em PHP funciona no esquema: requisição → processamento → resposta. A operação mais cara é o trabalho com o banco de dados (MySQL, PostgreSQL) e a geração de páginas HTML complexas. Se você tem 1000 visitantes por hora e cada requisição faz 10 consultas SQL, o servidor rapidamente "cai".
\n\nO cache em PHP resolve três problemas principais:
\n\n- \n
- Velocidade — os dados são entregues da memória ou de um arquivo em milissegundos; \n
- Economia de recursos — o processador e o banco de dados descansam; \n
- Escalabilidade — o site suporta o aumento de tráfego sem precisar atualizar o hardware. \n
E não importa se você escreve em PHP puro ou usa um framework (Laravel, Symfony, Yii2) — os princípios de cache de dados são os mesmos em todos os lugares.
\n\nPrincipais tipos de cache em PHP
\n\nAntes de escrever código, vamos entender o que exatamente podemos armazenar em cache. Existem três níveis principais:
\n\n1. Cache de páginas (Page Cache)
\nO tipo mais simples e eficaz. O código HTML pronto da página é salvo em um arquivo ou na memória. Em uma requisição repetida, o servidor entrega o HTML pronto, ignorando o interpretador PHP e o banco de dados. Ideal para páginas estáticas (página inicial, blog, catálogo).
\n\n2. Cache de dados e objetos (Data/Object Cache)
\nOs resultados de cálculos pesados, consultas ao banco de dados e respostas de API são salvos. Por exemplo, a lista de artigos recentes, a cotação de moedas, a classificação de usuários. Isso é o que normalmente chamamos de cache de dados.
\n\n3. Cache de código (Opcode Cache)
\nOs scripts PHP são compilados em bytecode. Ferramentas como OPcache salvam esse bytecode na memória para não compilar o mesmo script a cada requisição. É ativado no nível do servidor e não requer escrita de código.
\n\nNeste artigo, vamos focar nos dois primeiros tipos, pois podem ser controlados através do código PHP.
\n\nImplementação de cache em PHP: do simples ao complexo
\n\nCache de arquivos feito por você mesmo
\nA maneira mais simples de cache em PHP é salvar dados em arquivos. Isso não requer a instalação de extensões adicionais e funciona em qualquer hospedagem.
\n\nAqui está um exemplo de uma classe simples para cache de arquivos:
\n\n<?php\nclass FileCache\n{\n private $cacheDir;\n\n public function __construct($cacheDir = '/tmp/php-cache/')\n {\n $this->cacheDir = $cacheDir;\n if (!is_dir($this->cacheDir)) {\n mkdir($this->cacheDir, 0755, true);\n }\n }\n\n public function set($key, $data, $ttl = 3600)\n {\n $file = $this->getFilePath($key);\n $content = [\n 'expires' => time() + $ttl,\n 'data' => $data\n ];\n file_put_contents($file, serialize($content));\n }\n\n public function get($key)\n {\n $file = $this->getFilePath($key);\n if (!file_exists($file)) {\n return null;\n }\n $content = unserialize(file_get_contents($file));\n if ($content['expires'] < time(