Smarty e Caching
O artigo a seguir foi publicado originalmente por Gregory Brown no site http://elbugz.livejournal.com/1034.html
As informações disponibilizadas neste artigo são de responsabilidade de Gregory Brown do site http://elbugz.livejournal.com/
O Smarty é conhecido mais como um “Template engine” do que um “caching engine”. Embora a documentação fale sobre o cache, ele é pouco utilizado pelas pessoas e tende-se a pensar nele mais como uma ferramenta de exibição do qualquer outra coisa.
Vamos do começo…
O que é esse tal de caching engine?
Quando você faz um código php simples, por exemplo:
pag: exemplo1.php
<?php
for ($i=0;$i<5;$i++){
echo “$i – Linha repetida.<br />\r\n”;
}
?>
Ao rodar ele, o resultado será:
0 – Linha repetida.<br />
1 – Linha repetida.<br />
2 – Linha repetida.<br />
3 – Linha repetida.<br />
4 – Linha repetida.<br />
Toda vez que você acessar a página exemplo1.php, o que acontece é:
1 – seu servidor HTTP pede para o PHP interpretar o código-fonte do exemplo1.php
2 – o PHP lê o arquivo e processa as instruções nele
3 – ele cospe o resultado de volta para o servidor web
4 – o servidor web manda pra você.
Tá, legal, e daí? Você pergunta?
Aqui que entra o Caching-engine.
Um Caching engine permite você fazer algo um pouco diferente:
Toda vez que você acessar a página exemplo1.php, o que acontece é:
1 – seu servidor HTTP pede para o PHP interpretar o código-fonte do exemplo1.php
2 – o PHP lê o arquivo e processa as instruções nele
3 – o Caching-Engine (CE) verifica se existe uma versão já pronta da página
3a – se não tiver, ele executa as operações do for
3b – tem, lê o arquivo do disco.
4 – ele cospe o resultado de volta para o servidor web
5 – o servidor web manda pra você.
OK, então um caching engine basicamente cria uma cópia rendida de um arquivo pronto. Parece ser balela inútil, principalmente com um exemplo tão tosco e simples como um “for”.
Agora extrapolemos….
Imagine uma página que lê uma tabela de log do seu banco. Esses dados pegam o resultado estatístico a cada hora. Porque seu site tem muitas visitas, o LOG é bem extenso, e as queries demoram uns 2 segundos pra responder. Agora não só a query demora uns dois segundos pra responder, mas você ainda precisa fazer uma série de contas e cálculos complexos com os dados que são produzidos pela query.
Sua página agora demora uns 3 segundos pra responder, e nesse meio tempo, o processadordo servidor fica próximos dos 75%.
Você pergunta “tá e?”.
Agora lembre-se que seu servidor tem acessos pra caramba. Imagine 1000 usuários solicitando a mesma página em 1 minuto? O site trava, bomba, cai ou qualquer outra terminologia que você queira atribuir a esse acontecimento.
Se você utilizar um CE, o processamento ocorre somente uma vez, na primeira solicitação. Uma cópia do resultado é arquivado, e os outros 999 usuários vão estar vendo um HTML e não um PHP processado realtime.
Resultado? Seu site não cai, os outros serviços continuam livres para usar o processador.

