Acelere o carregamento de seu site com PHP Caching - Tableless - Website com artigos e textos sobre Padrões Web, Design, Back-end e Front-end tudo em um só lugar.
por Felipe Torretto 07/07/2016 ~ 4 min. / 778 palavras
Criar um site dinâmico, de fácil manutenção e que carregue rápido é o desejo de todo desenvolvedor, mas para isso não existe uma fórmula mágica, é necessário conciliar diferentes ferramentas e técnicas.
Mas muitos desenvolvedores iniciantes em PHP não conhecem as soluções existentes ou tem medo da curva de aprendizado que os frameworks exigem.
O foco desse artigo é mostrar para esses desenvolvedores como uma técnica simples, utilizando apenas comandos básicos do PHP, pode acelerar o carregamento de seu site e evitar que ele fique caindo.
O problema a ser resolvido, processamento desnecessário
Para cada acesso a um site dinâmico, o servidor geralmente realiza consultas no banco de dados, executa blocos de códigos e entrega uma página pronta para exibição.
Mesmo que os acessos a uma página ocorram com poucos segundos de diferença e nada no conteúdo tenha sido alterado, o servidor irá fazer o mesmo processo para cada solicitação, quantas vezes for preciso.
Isto é um trabalho desnecessário e que exige muito processamento do servidor, principalmente em momentos de tráfego intenso, e se o servidor não der conta, o seu site ficará temporariamente fora do ar.
A solução, PHP Caching
Também conhecido como Cache de Objetos, essa técnica executa uma página PHP e armazena o conteúdo gerado em um arquivo HTML, e para os próximos acessos, durante um certo período, o servidor irá entregar esse HTML gerado.
Sem a necessidade de consultar o banco de dados ou executar algum tipo de programação para montar a página, o servidor além de conseguir entregar uma página mais rapidamente, também suportará um número maior de acessos concorrentes.
Qual o ganho na performance?
Vai depender muito da programação do site, mas quanto mais ações forem realizadas no backend, maior será o ganho. Veja abaixo os resultados obtidos durante um teste:
A versão dinâmica foi entregue em 318 ms e a versão cacheada em 14 ms, 23 vezes mais rápido.
Chega de teoria e vamos para a prática, criaremos juntos um exemplo que seja o mais simples possível.
Primeiro crie uma pasta no seu ambiente de desenvolvimento chamada phpcaching, dentro dela crie outras duas pastas, uma chamada paginas onde iremos armazenar as páginas dinâmicas em PHP e outra chamada cache que irá armazenar os arquivos HTML.
Dentro da pasta paginas crie um arquivo chamado index.php, com o código:
<title>PHP Caching</title>
<p>Página gerada em: <?php echo date('H:i:s') ?></p>
Teste a página que acabamos de criar, acessando ela pelo navegador, no meu caso o endereço é: https://localhost/phpcaching/paginas/index.php
Você verá uma página simples, que apenas mostra o horário atual toda vez que é acessada.
Agora vamos criar o nosso controlador de cache, que irá funcionar da seguinte maneira:
Sabendo a lógica de funcionamento, fica mais fácil programar nosso controlador. Crie na raiz do projeto um arquivo chamado index.php com o seguinte código:
$validadeEmSegundos = 60;
$arquivoCache = 'cache/index.html';
$urlDinamica = 'https://localhost/phpcaching/paginas/index.php';
if (file_exists($arquivoCache) && (filemtime($arquivoCache) > time() - $validadeEmSegundos)) {
$conteudo = file_get_contents($arquivoCache);
// Acessa a versão dinâmica
$conteudo = file_get_contents($urlDinamica);
file_put_contents($arquivoCache, $conteudo);
// Exibe o conteúdo da página
Vou explicar as funções utilizadas para caso você não conheça alguma delas:
file_exists: verifica se um arquivo existe
file_get_contents: lê o conteúdo de um arquivo
file_put_contents: escreve o conteúdo em um arquivo
filemtime: retorna o horário que o arquivo foi modificado
time: retorna o horário atual
Agora acesse o site através do controlador de cache, no meu caso https://localhost/phpcaching/
Repare que o horário aparece como anteriormente, mas se atualizarmos a página o horário não muda. Isto acontece porque a página exibida é a versão cacheada, que foi armazenada na pasta cache com o nome index.html.
Pronto, nossa solução para cachear páginas está criada.
Esta técnica é uma maneira eficaz de aumentar a performance de seu site, sem precisar instalar algo no servidor ou algum framework no seu projeto e é recomendada para quem está iniciando no assunto.
O código apresentado não é uma solução definitiva, mas uma base que podemos expandir de acordo com as necessidades de cada projeto, crie sua versão melhorada, faça um teste com um projeto que você já possua e analise a diferença no tempo de carregamento do site.
Eu utilizo essa técnica em um portal de notícias da minha região, e apesar do site já ter sido migrado de servidor algumas vezes, o código nunca precisou de alteração, essa é a vantagem de utilizar apenas comandos básicos do PHP.