Criando cache com o Zend-Cache

Olá, tudo bem?!

Em nossas aplicações com frequência trabalhamos com informações/dados que não sofrem alteração com muita frequência, porem ela é carregada e processada o tempo todo em que o recurso é requisitado, acarretando em perda de performance e processamento desnecessário (maior custo para manter o sistema $$$) e uma experiência não muito agradável para o usuário.

Umas das possíveis formas de resolver esse nosso problema é armazenando essa informações em cache, para isso vamos utilizar o componente Zend-Cache, componente robusto e que nos fornece um leque de possibilidades muito bacana para nossa caixa de ferramenta.

Para demonstrar seu potencial vamos implementar um cache simples para que possamos vê-lo em prática.

Crie a seguinte estrutura de diretórios e arquivo:

  • exemplo-cache-zend
    • cache
    • index.php

Instalação do componente

Para instalar o Zend-Cache, basta acessar a raiz do projeto que criamos anteriormente e executar o seguinte comando:

Após a instalação do pacote, podemos dar início a implementação do recurso.

Implementação do recurso de cache com Filesystem

Abra o arquivo index.php e importe o autoloader do composer, para que ele nos auxilie no consumo do componente Zend-Cache.

Devemos agora importar o componente Zend-Cache\StorageFactory.

Com as devidas configurações implementadas, devemos agora criar nosso objeto que será responsável pelo gerenciamento do cache.

Vamos detalhar um pouco nosso código:

  • Adapter
    • name
      • Aqui especificamos qual tipo de cache desejamos utilizar, em nosso exemplo estamos utilizando o filesystem, onde irá ser criado um arquivo que irá armazenar nossa informação.
      • Existem também as opções:
        • Apc.
        • Dba.
        • Memcached.
        • Redis.
  • Options
    • ttl
      • Opção é definido em segundos o tempo que a informação será mantida em cache.
    • cache_dir
      • Opção que informa o local onde será criado os arquivos de cache.

O componente de Zend-Cache dispõem de muitas outras configurações, com isso recomendo que caso queira explorar mais a fundo o componente acesse sua documentação.

Vamos agora inserir nossa informação no cache, para isso devemos implementar a seguinte estrutura:

No código acima, basicamente requisitamos ao componente de cache para que o mesmo busque os dados armazenados, caso não tenha nenhuma informação armazenada será incluso os dados e exibido seu retorno para que possamos acompanhar o momento da inclusão das informações. A partir da inclusão dos dados no cache o componente irá criar um diretório e um arquivo “exemplo-cache-zend/cache/zfcache-c5/zfcache-dados.dat“.

Para que possamos analisar o resultado abra o terminal na raiz do projeto e execute o seguinte comando:

Após executar o código, será retornado uma mensagem similar ao exibido abaixo:

O NULL é referente a não termos nada ainda armazenado em cache e a string representa os dados recém armazenados, para validar nosso código basta executar o código novamente e analisar seu retorno, lembrando que as informações ficarão armazenadas por 15 segundos.

Como podemos observar as duas strings são idênticas, pois foram coletadas do nosso cache que acabamos de implementar, para que seja exibido novas informações devemos aguardar os 15 segundos que configuramospara que todo o processo de inserção seja executado novamente.

A implementação foi simples e rápida,  o cache com filesystem permite apenas armazenarmos string, porem deixo uma dica, caso queira armazenar um array basta convertê-lo para json armazená-lo em cache e assim que você retornar os dados converta-o novamente para array 😉

Espero que tenham apreciado e que seja útil para você em seu dia a dia.

Caso tenham alguma dica, sugestão, crítica ou elogios recomendo que deixem nos comentários para que assim possamos gerar mais conteúdo e aprender cada vez mais.

Um grande abraço e até mais 🙂

 

Diego Brocanelli

 

2 thoughts on “Criando cache com o Zend-Cache

  1. Parabéns diego outro post muito bom. Utilizo o zend-cache no menu da minha aplicação, o menu eh carregado do banco então para que ele não faça uma consulta toda vez que o navegador carregar o sistema alimenta o menu com os dados no cache.

    1. Olá Raffael,

      Fico feliz que tenha apreciado o conteúdo.

      Utilizar cache é super importante, pois podemos melhorar a performance do sistema de uma forma simples.

      Qual tipo de cache está utilizando para armazenar os dados do seu menu?

      Grande abraço 🙂

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *