Configurar o cache em PHP com o componente Symfony Cache

Hoje, mostrarei o componente Symfony Cache, uma maneira fácil de adicionar cache às suas aplicações PHP. Isso ajuda a melhorar o desempenho geral do seu aplicativo reduzindo o tempo de carregamento da página.

O componente de cache do Symfony

O componente Symfony Cache permite que você configure o cache em seus aplicativos PHP. O componente em si é muito fácil de instalar e configurar e permite que você comece rapidamente. Além disso, ele fornece uma variedade de adaptadores para escolher, conforme mostrado na lista a seguir:

  • adaptador de banco de dados
  • adaptador de sistema de arquivos
  • adaptador memcached
  • Adaptador Redis
  • Adaptador APCu
  • e mais

Quando se trata de cache usando o componente Symfony Cache, existem alguns termos com os quais você deve se familiarizar.

O componente Symfony Cache permite que você escolha entre duas abordagens diferentes de cache.

Cache PSR-6

É um sistema de cache genérico que gira em torno de pools de cache e itens de cache.

Para começar, o item de cache refere-se ao conteúdo que é armazenado. Cada item é armazenado como um par chave-valor. Os itens de cache são gerenciados pelo pool de cache, que os agrupa logicamente. Na verdade, você precisa usar o pool de cache para manipular os valores de cache.

Por fim, é o adaptador de cache que faz todo o trabalho pesado para armazenar itens no back-end do cache.

Contratos de cache

É uma maneira simples, mas mais poderosa, de armazenar valores em cache com base em retornos de chamada de recomputação. Ele também vem com prevenção de Stampede integrada. Também é a maneira recomendada, pois requer menos código quando comparado ao cache do PSR-6.

Neste artigo, exploraremos as duas maneiras de entender como você pode liberar o poder do componente Symfony Cache. Como de costume, começaremos com a instalação e configuração e, em seguida, exploraremos alguns exemplos do mundo real na segunda metade do artigo.

Instalação e configuração

Nesta seção, vamos instalar o componente Cache. Presumo que você já tenha instalado o Composer em seu sistema—você precisará dele para instalar o componente Cache disponível no Packagist.

Depois de instalar o Composer, vá em frente e instale o componente Cache usando o seguinte comando.

Isso deveria ter criado um compositor.json arquivo que deve ficar assim:

É isso para instalação, mas como você deve adicioná-lo ao seu aplicativo? É só incluir o autoload.php arquivo criado pelo Composer em seu aplicativo, conforme mostrado no trecho a seguir.

Cache PSR-6: um exemplo do mundo real

Nesta seção, veremos um exemplo que demonstra como você pode usar o componente Cache em seus aplicativos para armazenar conteúdo em cache com o método de armazenamento em cache PSR-6.

Para começar, vamos em frente e criar o index.php arquivo com o seguinte conteúdo.

Vamos percorrer as principais partes do index.php arquivo para entender seu propósito.

Criar o pool de cache

Como discutimos anteriormente, os itens armazenados em cache são armazenados em um pool de cache. Além disso, cada conjunto de cache é apoiado por um adaptador e back-end de cache específicos. Se desejar armazenar itens no cache do sistema de arquivos, por exemplo, será necessário inicializar o conjunto de caches do adaptador do sistema de arquivos.

Você pode fornecer três argumentos opcionais para o FilesystemAdapter objeto:

  • o namespace no qual você gostaria de criar entradas de cache
  • uma vida útil em segundos para itens de cache
  • o diretório no qual o cache será armazenado.

Como armazenar valores de string

Como já criamos o pool de cache, podemos usá-lo para armazenar itens de cache.

Em primeiro lugar, usamos o getItem método para buscar o item de cache com o demo_string chave. A seguir, usamos o isHit método para verificar se o valor que estamos procurando já está presente no item de cache $demoString.

Como esta é a primeira vez que estamos buscando o demo_string item de cache, o isHit método deve retornar false. A seguir, usamos o set método do $demoString objeto para definir o valor do cache. Finalmente, salvamos o $demoString item de cache no $cachePool pool de cache usando o save método.

Agora que armazenamos o item no cache, vamos ver como buscá-lo no cache.

Aqui, usamos o hasItem método para verificar a existência do item de cache no pool de cache antes de recuperá-lo.

Em seguida, vamos ver como excluir todos os itens de cache do pool de cache:

Como armazenar valores de matriz

Na seção anterior, discutimos como armazenar valores básicos no pool de cache. Armazenar valores de array é praticamente o mesmo, como você pode ver no exemplo a seguir.

Como você pode ver, podemos simplesmente definir o item de cache com um valor de matriz, da mesma forma que fizemos para uma string.

Em seguida, vamos ver como excluir o item de cache específico do pool de cache.

Aqui, usamos o deleteItem método para excluir o demo_array item do pool de cache.

Como definir uma data de expiração para itens em cache

Até agora, armazenamos itens em cache no pool sem data de expiração. No entanto, você normalmente não deseja armazenar itens no cache permanentemente. Por exemplo, você deseja atualizar os itens de cache periodicamente, portanto, precisa de um mecanismo que limpe os itens de cache expirados.

Nesta seção, discutiremos como armazenar itens no cache junto com uma data de expiração.

Como você pode ver no trecho acima, você pode usar o expiresAfter método para definir uma data de expiração para o item em cache. Você pode passar o número de segundos que deseja armazenar em cache um item no primeiro argumento do expiresAfter método.

Em nosso exemplo, usamos o sleep método para testar se o item em cache ainda está disponível no pool de cache.

Vá em frente e teste para ver como funciona!

Contratos de cache: um exemplo do mundo real

Nesta seção, veremos um exemplo que demonstra como você pode usar o componente Cache em seus aplicativos para armazenar conteúdo em cache com a ajuda de Contratos de Cache.

Para começar, vamos em frente e criar o cache_contracts.php arquivo com o seguinte conteúdo.

Vamos percorrer as principais partes do cache_contracts.php arquivo para entender seu propósito.

Como armazenar valores de cache com contratos de cache

Em primeiro lugar, é importante observar que os contratos de cache suportam apenas dois métodos. o get é usado para obter e definir valores de cache. Por outro lado, o delete é usado para excluir o item de cache.

Agora, vamos ver rapidamente o trecho a seguir que é usado para definir e obter o valor do cache ao mesmo tempo.

Em primeiro lugar, você precisa inicializar a instância do pool de cache. Agora, podemos usar este objeto para definir valores de cache com a ajuda de Cache Contracts. Como você pode ver, o primeiro argumento é uma chave de cache e o segundo argumento é um PHP callable que só é executado se a chave não for encontrada no pool de cache. O PHP callable é responsável por gerar o valor do cache e retorná-lo também.

Como definir uma data de expiração para itens em cache com contratos de cache

É muito fácil definir o item de cache junto com uma data de validade. Vejamos rapidamente o trecho a seguir.

Como você pode ver, usamos o expiresAfter método do $item objeto para definir a data de expiração.

Invalidar itens de cache com tags de cache

Ao criar itens de cache, você pode anexar uma tag a eles. Portanto, é como manter os itens de cache agrupados logicamente sob a mesma tag. É realmente útil quando você deseja excluir todos os itens de cache relacionados entre si e não deseja excluí-los por chaves.

Vejamos rapidamente o trecho a seguir.

É importante observar que, quando você deseja anexar tags a itens de cache, é necessário usar o adaptador de cache com reconhecimento de tags. Assim, usamos o FilesystemTagAwareAdapter adaptador que é a versão com reconhecimento de marca do FilesystemAdapter adaptador.

Em seguida, você precisa usar o tag método para anexar uma tag ao item de cache. E, finalmente, você pode usar o invalidateTags método da classe do adaptador para remover entradas de cache associadas a tags de cache específicas.

É assim que você pode usar os Contratos de Cache para gerenciamento de cache em seus projetos.

Conclusão

Hoje, demos uma breve olhada no componente Symfony Cache, que permite configurar o cache em seus aplicativos PHP. Ele também suporta uma variedade de adaptadores de cache que, juntos, oferecem a flexibilidade de escolher o tipo de back-end que você deseja usar.

Deixe um comentário

O seu endereço de e-mail não será publicado.