PHP - Cache de Includes

Olá meus Unicórnios! 🦄✨

É meio estranho pensar nisto, mas imagine que você tenha um include para cada seção da capa.

Um carrega os últimos vídeos, um carrega os últimos artigos, etc.

Ficar carregando diretamente da base de dados não é eficiente.

Então, iremos criar um cache do conteúdo que é gerado por cada um destes includes.

Para este exemplo, iremos considerar que temos:

  • index.php: A capa do site
  • inc_artigos.php: Listagem dos últimos Artigos
  • inc_videos.php: Listagem dos últimos Vídeos
  • inc_produtos.php: Listagem dos últimos Produtos

Dentro do "index.php", temos apenas a chamada aos includes:

<?
include("inc_artigos.php");
include("inc_videos.php");
include("inc_produtos.php");
?>

Agora iremos criar o cache do "inc_artigos.php".

Tecnicamente não é possível "pegar" todo o arquivo html deste arquivo com facilidade.

Então, o que iremos fazer é manipular o buffer de saída.

A primeira coisa é iniciar um NOVO buffer, desta foram, tudo que for exibido após este ponto estará disponível no buffer:

<?
ob_start()
?>

No final, iremos pegar tudo que foi inserido no buffer desde do último "ob_start()":

<?
$content = ob_get_clean();
?>

Agora vamos agrupar isto no "index.php":

<?
$cacheFile = "cache/artigos.php";

if( file_exists($cacheFile) ){

    include $cacheFile;
	
}else{

    ob_start();
    
	include("inc_artigos.php");
	
    $content = ob_get_clean();
    file_put_contents($cacheFile, $content);
    echo $content;
	
}
?>

E depois é só replicar para cada include!

Por hoje é só, meus unicórnios! 🦄✨

Que a magia do arco-íris continue brilhando em suas vidas! Até mais! 🌈🌟