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.

Comments:

Post a comment