15 janeiro 2009

Caching de uma forma simples e eficaz com PHP

Todos sabemos da grande importância de se utilizar técnicas de caching em sistemas com grande quantidade de acessos. Porém, por ter que utilizar ferramentas para realizar tal trabalho, muitos desenvolvedores acabam ignorando essa prática.

Para quem não quer utilizar nenhuma ferramenta, e ainda assim dispor de um caching eficaz, há uma técnica daquelas que quando vemos, imaginamos: "Como não pensei nisso antes".

Batizada de "Maneira Rasmus Lerdorf de se fazer cache", na verdade ela foi criada por Stig Bakken, um grande contribuidor do PEAR, e é eficaz pois gera arquivos HTML e salva no servidor, evitando que o PHP seja acionado em cada requisição.

A técnica funciona da seguinte maneira:

1 - É feita uma alteração no apache(ou arquivo htaccess) para que a página de erro 404(File not found) seja redirecionada para um arquivo php.
2 - Esse arquivo php vai receber todas as requisições que teriam como resposta o erro 404. Nele é feito um tratamento no qual o php vai gerar uma página html com o nome que o usuário tentou acessar, ou seja, para cada item do sistema, esse arquivo será gerado somente uma vez.
3 - Um arquivo é criado para apagar os arquivos HTML de tempos em tempos para que as informações sejam atualizadas.

Ou seja, o usuário acessa o arquivo noticia01.html, como o arquivo não existe, a requisição será redirecionada para o arquivo php.
Este por sua vez vai acessar o arquivo que gera o conteúdo e salvar o HTML com nome noticia01.html.
A partir disso, todos os usuários que tentarem acessar o noticia01.html, não mais terão o fluxo direcionado para o PHP, pois o arquivo html existe. Então não haverá perca de tempo com processamento.
Para manter as informações atualizadas, é possível criar um arquivo php que irá gerenciar os arquivos HTML, excluindo-os de tempo em tempo.

Um exemplo de como utilizar essa técnica pode ser visto em um artigo de Felipe Ribeiro no IMasters

Obrigado ao Bruno Porkaria pela dica!

Em tempo, para que não faz a mínima ideia do que seja Cache, Wikipédia

2 comentários:

  1. Muito bom!
    Fica a dica de outro artigo com o mesmo tema: Smarty. Muita gente acha que o Smarty é simplesmente para separar html de PHP, sendo que a maior utilidade dele é justamente o esquema de evitar processamento desnecessário.

    ResponderExcluir
  2. É verdade...
    Vou falar com o Otávio que já trabalhou bastante com Smarty para preparar um post sobre isso.

    Obs.: Por falar em Smarty eu tive o prazer de conhecer o desenvolvedor dele, o Andrei Zmievski no CONAPHP. Fomos do evento ao aeroporto no mesmo carro e tive a oportunidade de trocar umas ideias com ele. O cara saca muito!!!

    ResponderExcluir