Criando cache de páginas com CodeIgniter

Criando cache de páginas com CodeIgniter

12/12/2019 2 Por Jonathan Lamim

O cache de páginas é muito importante para que uma página possa ser carregada mais rapidamente e você possa otimizar sua aplicação. Se o usuário acessar a página pela primeira vez, ela ainda não estará no cache e poderá demorar um pouco pra carregar, mas nas próximas visitas, o carregamento será mais rápido.

No CodeIgniter os arquivos de cache são armazenados no diretório application/cache. Com poucas linhas de código você pode montar toda a estrutura de cache da aplicação, determinando por quanto tempo o cache será armazenado, até ser atualizado. Também tem a possibilidade de remover e atualizar esse cache a qualquer momento, e de forma independente, para cada página.

Ativando o cache

Para ativar o cache você deve informar a linha a seguir no controller responsável por carregar a view que você deseja armazenar no cache.

$this->output->cache($minutos);

$minutos: é o tempo, em minutos que a página deve permanecer no cache.

Desativando o cache

O cache pode ser desativado e removido a qualquer momento, de duas maneiras:

Para a URI atual

$this->output->delete_cache();

Para uma rota específica

$this->output->delete_cache('rota/a/ter/o/cache/removido');

Um exemplo simples de aplicação do cache

Crie um controller chamado Base contendo 2 métodos: no primeiro é criado o cache, que irá durar 10 minutos e é exibida uma view simples, e no segundo, o cache da página acessada pelo primeiro método é removido e nada é exibido.

<?php 
class Base extends CI_Controller { 

    public function Index() { 
        $this->output->cache(10); 
        $this->load->view('pagina_em_cache'); 
    }

    public function Remove_cache() { 
        $this->output->delete_cache('cache'); 
    } 
} 
?>

Como no método Index chamamos uma view, será necessário criá-la. Para isso crie o arquivo pagina_em_cache.php dentro de application/views com o conteúdo abaixo:

<!DOCTYPE html> 
<html lang="pt_BR">

   <head> 
      <meta charset = "utf-8"> 
      <title>Criando cache de páginas com CodeIgniter</title> 
   </head>

   <body> 
     <h1>Essa página vai ficar no cache por 10 minutos.</h1>
   </body>

</html>

Para tornar o funcionamento efetivo, vamos criar 2 rotas para poder acessar pelo browser. Abra o arquivo routes.php e atualize o conteúdo, inserindo as 2 rotas abaixo:

$route['cache'] = 'Base';
$route['remover-cache'] = 'Base/Remove_cache';

Feito isso, ao acessar no browser a url http://localhost/exemplo/cache (ou a que representar o acesso ao exemplo no seu ambiente) verá a página criada, e ao olhar o diretório application/cache verá que um arquivo foi criado lá. Se acessar na sequência http://localhost/exemplo/remover-cache (ou a que representar o acesso ao exemplo no seu ambiente), imediatamente o arquivo será removido do diretório application/cache.

Até a próxima!