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).
// 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/",
"lifeTime" => 50
);
// Instancia o objeto Cache Lite
$objCache = new Cache_Lite($options);
// Teste se já existe um Cache válido
if ($conteudo = $objCache->get($id)) {
// Se existe ele exibe o conteudo que estava no cache
echo $conteudo;
// Adiciona no fim do conteúdo um indicador que veio do cache (só para exemplo)
echo " [cached]";
} else {
// 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
//Criamos o resultado
$quote = "Aprendendo como utilizar o cache";
//Exibimos o resultado
echo $quote;
//Armazenamos no cache
$objCache->save($quote, $id);
}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.
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.
Abraços!