+1

Usando cache na classe Fast Template

criado por Allyson F. de Paula Reis em 02/11/2003 12:36am
Meu objetivo aqui não é falar sobre como utilizar a Fast Template, pois vários artigos publicados aqui e em outros sites já explicaram exaustivamente a sua utilização para vários fins como por exemplo:

• <a href='http://www.phpbrasil.com/articles/article.php/id/247'>
Organizando projetos com a classe FastTemplate (parte 1)</a>

• <a href='http://www.phpbrasil.com/articles/article.php/id/266'> Organizando projetos com a classe FastTemplate (parte 2)</a>

• <a href='http://www.phpbrasil.com/articles/article.php/id/329'>
Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 1)</a>

• <a href='http://www.phpbrasil.com/articles/article.php/id/426'>
Usando Blocos Dinâmicos com a Classe FastTemplate (Parte 2)</a>

Aqui e nos vários fóruns de discussão que pesquisei sobre templates sempre vi uma certa "briga" entre fãs da Fast Template e fãs da Smarty. Os que utilizavam a Fast Template salientavam sua simplicidade como ponto forte e os que utilizavam a Smarty a possibilidade da utilização de tags em blocos dinâmicos e suporte a cache.

Fiquei tão surpreso quando vi que a classe em questão mesmo sendo tão útil, simples e tão utilizada não suportava cache, que então resolvi eu mesmo implementar tais funções e disponibilizar aqui um exemplo e o código da classe.

1° Crie um diretório "./cache" antes de prosseguir com a criação dos arquivos abaixo:


<?php 
include "FastTemplate.class.php"; 

// Inicializando a Fast template setando ./html como dir dos seus modelos
$template = new FastTemplate('./html'); 

// Setando o uso de cache 
$template->USE_CACHE(); 

$template-> define ( 
   array ( 
   'pagina' => 'index.htm' 
   ) 
); 

// Substituindo em {DATA_ATUAL} a string da data atual
$data = date("d/m/Y"); 
$template->assign('{DATA_ATUAL}',$data); 

// Substituindo em {HORA} a função de retorno de hora atual 
// para geração um cache dinâmico 
$template->assign('{HORA}','<?=date("H:i:s")?>'); 

// atribui ao handle OUTPUT a saída do processamento do modelo 
$template->parse('OUTPUT','pagina'); 

// imprime na tela o conteúdo de OUTPUT 
$template->FastPrint('OUTPUT'); 
?> 


<HTML> 
<BODY BGCOLOR="#ffffff"> 
<h2>Um Simples Modelo para uso de cache</h2> 
A data de hoje é: {DATA_ATUAL}<br> 
E a hora: {HORA} 
</BODY> 
</HTML> 


NOTA: Essa versão da Fast Template não é "bug-free", ou seja, ainda não foi testada exaustivamente, mas como o código dela está ai, caso precise de modificações (se encontrar algum bug), por favor publiquem a correção na sessão Scripts do PHP Brasil.


[]`s

Ragen

Comentários:

Mostrando 1 - 5 de 5 comentários
Esse erro é da classe original acredite ou não....

Existe outra versão mais nova que eu lancei dessa classe http://www.vivaolinux.com.br/scripts/verScript.php?codigo=283

[]`s

Ragen
15/02/2004 12:54am (~20 anos atrás)

Cannot redeclare clear_parse() in FastTemplate.php on line 695

que erro é esse e como faço pra resolver? :)
09/02/2004 10:35pm (~20 anos atrás)

a disse:
eu imaginei que fosse algo do tipo mesmo ...

bem ... a um tempo atrás eu li alguns artigos aki no PHPBrasil sobre templates e la estava eu tentando escrever uma classe que gerasse blocos de templates dinâmcos ...

ela funcionou perfeitamente e até cheguei a usar em alguns pequenos sites que criava...

c acredita q sem saber eu fiz uma espécie de cache??!?!

hhAhahAHaHHAhaha .. muito legal...

gostei do seu artigo!
02/11/2003 1:45pm (~20 anos atrás)

Olá André,

A lógica de templates de uma forma bem grosseira é substituir uma string em um modelo (modelo template) por outro conteudo (geralmente um conteudo dinânico gerado pela procura de um banco de dados... etc).

Tal lógica a principio facilita alguns pontos do desenvolvimento:

1 - Separacao total do código HTML dos seus scripts PHP

2 - O Webdesigner não precisam ter acesso aos scripts PHP para testarem seu trabalho... O que evita a possibilidade de dados sigilosos vazarem por exemplo.

3 - Com a separação citada no item 1, você verá uma notavel organização em seus códigos e com isso vc também terá muito mais facilidade para dar manutenção em seus códigos.

Mas todo esse processo tem um preço... Existe um processamento extra para fazer essas "substituições de strings modelo=>código".
Então a solução mais simples é a geração de cache, ou seja, vc pega o resultado final do processo e então guarda em disco... Assim da proxima vez que alguem tentar acessar essa página cacheada a classe fará a comparacao:

Se a página foi gerada a menos de X segundos (definido pela sua configuracao), então retorna a página em disco invés de processar outra.

Com isso vc pode reduzir acessos ao banco de dados e o processamento da substituição em si.

Moral da história: A classe tenta sempre guardar uma página pré-compilada no servidor.


[]`s

Ragen
02/11/2003 11:06am (~20 anos atrás)

a disse:
Olá, ainda não tenho muita experiência com Templates e por isso não sei o que é cache nesse tipo de aplicação: será que poderiam me explicar?
02/11/2003 7:53am (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)