Melhorando o desempenho com o uso de Cache

Antigamente os sites eram mais estáticos, poucos deles apresentavam conteúdo dinâmico vindo de um banco de dados.

Mas hoje, é dificil ver um site estático e com isso a preocupação com o desempenho que antes era um luxo hoje é um requisito muito importante.

Pensando nisso, foram criados vários scripts de cache e o que vou apresentar hoje é o Cache Lite (PHP).

Download do Cache Lite

 <?php

// Inclui a classe Cache Lite
require_once("Lite.php");

// Seta um nome para o cache
$id = "nosso_cache";

// Seta as configurações
$options = array(
cacheDir" => "cache/",<br />
"lifeTime" => 50<br />
);</p>
<p>// Instancia o objeto Cache Lite<br />
$objCache = new Cache_Lite($options);</p>
<p>// Teste se já existe um Cache válido<br />
if ($quote = $objCache->get($id))<br />
{<br />
// Se existe ele exibe o conteudo que estava no cache<br />
echo $quote;</p>
<p>// Adiciona no fim do conteúdo um indicador que veio do cache (só para exemplo)<br />
echo " [cached]";<br />
}<br />
else<br />
{<br />
// Se ainda não existe um cache para esse conteudo, devemos criar o conteúdo, exibi-lo e depois armazena-lo no cache para que a próxima consulta não seja criada e sim retornada do cache</p>
<p>//Criamos o resultado<br />
$quote = "Aprendendo como utilizar o cache";</p>
<p>//Exibimos o resultado<br />
echo $quote;</p>
<p>//Armazenamos no cache<br />
$objCache->save($quote, $id);<br />
}</p>
<p>?> 

O resultado se o cache não existir seria:

Aprendendo como utilizar o cache

E se ele existir seria

Aprendendo como utilizar o cache [cached]

Dessa forma, ele só criará o resultado final se ainda não existir em cache e também se não estiver com a validade vencida. Leia sobre o lifetime na legenda no final do artigo.

Mas esse exemplo foi de uma simples frase, e como seria para um conteúdo vindo do banco de dados?

Simples:

<?php

// Inclui a classe Cache Lite
require_once("Lite.php");

// Seta um nome para o cache
$id = "nosso_cache";

// Seta as configurações
$options = array(
cacheDir" => "cache/",<br />
"lifeTime" => 50<br />
);</p>
<p>// Instancia o objeto Cache Lite<br />
$objCache = new Cache_Lite($options);</p>
<p>// Teste se já existe um Cache válido<br />
if ($quote = $objCache->get($id))<br />
{<br />
// Se existe ele exibe o conteudo que estava no cache<br />
echo $quote;</p>
<p>// Adiciona no fim do conteúdo um indicador que veio do cache (só para exemplo)<br />
echo " [cached]";<br />
}<br />
else<br />
{<br />
//esta função vai armazenar o resultado que vai pra tela do usuário<br />
ob_start();</p>
<p>?><br />
<html><br />
<head></head><br />
<body><br />
Aprendendo como utilizar o <i>cache</i><br />
</body><br />
</html><br />
<?php

// terminou de gerar a página

// obtem o conteúdo que foi armazenado
$conteudo = ob_get_contents();

// salva o conteudo
$objCache->save($conteudo, $id);</p>
<p>// exibe o conteudo na tela do usuário<br />
ob_end_flush();<br />
}</p>
<p>?>

Viu  como é simples?

Legenda:

  • cacheDir :: pasta onde serão armazenados os arquivos gerados do cache
  • lifetime :: tempo de vida do arquivo de cache em segundos. É necessário para que quando você pergunte se existe um cache válido ele retorne falso quando não existir o arquivo e também quando existir, porém com a validade vencida
  • $id :: utilizei essa variável para armazenar o nome do arquivo do cache. É interessante utilizar essa função em conjunto com a md5() para que o nome do arquivo não contenha caracteres inválidos como a interrogação ? ou barras / que são normais em urls.

Algum erro que eu tenha cometido ou uma sugestão de melhoria avise pelo comentário ok?

Abraços!

Autor: Frederico de Castro

Diretor de tecnologia da Surreal Group, formado em sistemas de informação, com experiência em desenvolvimento web e desktop desde 2006, gosta de tudo relacionado à tecnologia e automação no ambiente web.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *