BLACK FRIDAY Está chegando! Seja o primeiro a receber nossas ofertas Cadastre-se aqui

Técnica de cache em PHP

Neste exemplo, vamos verificar a otimização real usando um pequeno script em PHP para gerar um arquivo de cache usando o código, embora existam muitas maneiras e técnicas, hoje vamos analisar apenas uma delas.

O objetivo é criar arquivos HTML puros e estáticos, entenda que nos referimos a páginas puras e estáticas cujo conteúdo permanece inalterado e formatado com tags html. Por outro lado, uma página de conteúdo dinâmico é aquela que, baseada em scripts PHP, pode eventualmente conter: processos longos e complexos, interação e consultas baseadas em dados, entre outras coisas, que são em última análise quais condições e apresentam seu conteúdo, inclusive eles podem variar entre um pedido e outro; Portanto, o objetivo é otimizar uma página de conteúdo dinâmico, mas, uma vez criado, esse conteúdo não precisa ser gerado constantemente.

Se precisarmos que o conteúdo seja cem por cento em tempo real e que varie constantemente, o cache, neste caso, não é uma opção recomendada ou útil, a intenção é “armazenar em cache” as páginas com conteúdos que de alguma forma podem levar N segundos no resfriamento e que em solicitações diferentes permanece inalterado por algum tempo.

Ao gerar arquivos HTML, estaremos protegendo o desperdício desnecessário de recursos do servidor e, obviamente, otimizamos o desempenho geral: recursos versus resultados, entendemos que consumindo HTML diretamente estaríamos alcançando: menos consultas ao Banco de Dados, menos processos, enfim isso se refletirá menos desgaste geral do nosso servidor web

  • Para otimizar, precisamos ter uma métrica inicial

Bem, é o que temos que fazer, primeiro “medir” o tempo de execução de um script sem cache, pode ser uma página inteira ou parte do script (entende-se que quando dizemos páginas nos referimos ao documento individual, porque muitas pessoas poderiam se referir a ele erroneamente como uma página para um site).

Para ter uma métrica inicial, usaremos o seguinte código.

Se for uma página com conteúdo estático, não faz sentido usar essa técnica de cache.

<?php
 $comienzo= microtime(true);  //no começo do arquivo
 ?>

Então usamos todo o código presente na página, sejam eles: PHP, HTML, CSS e/ou Javascript, dependendo do projeto.

E no final de tudo nós vamos colocar o seguinte.

<?php

/*—————-Fin Código———————–*/

$final= microtime(true);  //no fim do arquivo

echo  “Tempo: “. number_format($final-$comienzo,4).”  segundos.”;

?>

Agora vamos ter documentado o tempo de execução inicial, devemos guardar essa informação como base para a análise.

Seguidamente criaremos dois novos arquivos.

top_cache.php
 
 <?php

$começo= microtime(true); //no começo do arquivo

$url = $_SERVER[“SCRIPT_NAME”]; //nós temos o nome da url e nomes de arquivos atuais

$break = explode(‘/’, $url); //nós dividimos os sindicatos por e obtemos uma matriz de dados

$file = $break[count($break) – 1]; //nós temos o nome real do arquivo



$cachefile = ‘cached-‘.substr_replace($file ,””,-4).’.html’; //criamos um novo nome para o cache, isso será HTML para otimizar recursos

$cachetime = 900; //nós definimos o tempo de duração do cache em segundos | 900/60 = 15 minutos

// Servir do cache se for mais atual do que $cachetime

if (file_exists($cachefile) && time() – $cachetime < filemtime($cachefile)) {

echo “<!– Copia em cache gerada “.date(‘H:i’, filemtime($cachefile)).” –>\n”;

include($cachefile);

$final= microtime(true); //no final do arquivo

echo “<div>Novo tempo: “. number_format($final-$começo,4).” segundos.</div>”;

exit;

}

ob_start(); // Criar buffer de saída

?>
bottom_cache.php
 
 <?php

// Armazenar em cache o conteúdo do arquivo

$cached = fopen($cachefile, ‘w’); //pega o nome do arquivo de cache que criamos em topo_cache se ele não existe ou se já passou sua vida útil

fwrite($cached, ob_get_contents()); //escreva todo o conteúdo do arquivo atual

fclose($cached);

ob_end_flush(); // Enviar o navegador

?>

Este arquivo top_cache.php deve ser incluído na primeira linha da minha página para “cache” e bottom_cache.php no final.

 <?php  include "top_cache.php"; ?>

Aqui vai o código PHP, HTML, css, etc.

 
 <?php include "bottom _cache.php"; ?>

Em nossos testes, a melhora foi notada em 50%, mas estranhamente logo após a terceira chamada para a página em cache; isso não funciona corretamente quando há paginação no meio, porque isso é baseado no nome do arquivo e quando ele é paginação, o nome da página permanece o mesmo somente alterados os parâmetros, a menos que usemos url amigável, caso em que cada Paginação poderia ser um nome diferente, embora com um pouco de paciência talvez e nós encontrarmos uma solução para isso.

Você pode gostar de…

SCRIPTCASE: O que é VS O que não é

O que é VS O que não é O que é o ScriptCase? É um ambiente de desenvolvimento rápido com...

Usando Biblioteca Externa para montar DataGrids em formulários e Report PDF

Nesse artigo vamos apresentar uma classe externa em php desenvolvida exclusivamente para usar com Sc...

Como abordar com sucesso o desenvolvimento de software

Como abordar com sucesso o desenvolvimento de software O Scriptcase é um poderoso ambiente de dese...

Comente este post

Receba novos posts, ofertas e muito mais toda semana.

Usaremos as informações fornecidas para lhe enviar newsletter e ofertas especiais por email. Você pode cancelar a inscrição quando quiser, clicando em um link no rodapé de qualquer e-mail que receber de nós, ou entrando em contato conosco pelo e-mail sales@scriptcase.net. Saiba mais sobre nossa Polícia de Privacidade.