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!