O que é o sistema de configuração de cache do Symfony?
O sistema de configuração de cache do Symfony é responsável por definir as políticas de cache para sua aplicação. O cache é uma técnica que armazena o resultado de uma operação ou consulta em um local de fácil acesso, para que possa ser reutilizado em futuras operações ou consultas. Isso ajuda a melhorar a performance da aplicação, reduzindo o tempo de processamento e a carga do servidor.
Como configurar o cache no Symfony?
Para configurar o cache no Symfony, é necessário criar um arquivo de configuração para cada ambiente em que a aplicação será executada (dev, prod, test, etc). Esse arquivo deve ser salvo na pasta “config”, com o nome “cache.yaml”.
# config/cache.yaml
parameters:
cache_adapter: cache.adapter.apcu
cache_key_prefix: minha_aplicacao
framework:
cache:
pools:
cache.main:
adapter: '%cache_adapter%'
default_lifetime: 3600 # tempo de vida do cache em segundos
namespace: '%cache_key_prefix%'
Nesse exemplo, estamos definindo o cache_adapter como “cache.adapter.apcu”. APCU é uma extensão do PHP que fornece um cache persistente em memória. Você também pode usar outras opções de adaptadores, como o filesystem ou o redis.
O cache_key_prefix é uma chave que será adicionada ao início de todas as chaves de cache. Isso ajuda a distinguir as chaves de cache da sua aplicação de outras chaves de cache que podem estar armazenadas no mesmo adaptador.
Precisamos definir também um pool para o nosso cache. Um pool é uma área de armazenamento de cache com um conjunto específico de propriedades. No exemplo, estamos definindo um pool chamado “cache.main” e atribuindo a ele nosso adaptador de cache padrão e um tempo de vida de 3600 segundos (uma hora).
Como utilizar o cache em uma aplicação Symfony?
Para utilizar o cache em sua aplicação Symfony, você deve criar uma instância do pool de cache e usá-la para armazenar e recuperar os valores do cache. No controlador abaixo, estamos criando uma instância do cache do pool “cache.main” e usando-a para armazenar a lista de usuários:
use SymfonyComponentCacheAdapterAdapterInterface;
class UserController extends AbstractController
{
private $cache;
public function __construct(AdapterInterface $cache)
{
$this->cache = $cache;
}
public function listUsers()
{
$users = $this->cache->get('users', function () {
// busca a lista de usuários no banco de dados
return $this->getDoctrine()->getRepository(User::class)->findAll();
});
return $this->render('user/list.html.twig', [
'users' => $users,
]);
}
}
No método listUsers, estamos usando o método $cache->get(‘users’, function () {…}) para buscar a lista de usuários no cache. Se essa chave não existir no cache, o segundo argumento (uma função anônima) será executado para buscar a lista de usuários no banco de dados. O resultado dessa função será armazenado no cache com a chave “users” e retornado.
Na próxima vez que esse método for chamado, a lista de usuários será recuperada do cache, em vez de buscar no banco de dados novamente.
Conclusão
O sistema de configuração de cache do Symfony é uma das ferramentas mais poderosas disponíveis para melhorar o desempenho de sua aplicação. Ao definir uma política de cache eficiente, é possível reduzir significativamente os tempos de processamento e melhorar a experiência do usuário. Utilize essas técnicas para obter o melhor resultado em seu projeto Symfony.