O Doctrine 2 tem um capítulo completo dedicado ao cache, mas até agora nunca havíamos dado uma olhada nele na ulabox .
O fato é que o capítulo não fala apenas sobre o cache de resultados SQL por algum tempo – o cache de resultados -, um tipo de cache no qual não estamos interessados atualmente, mas o cache de metadados para melhorar o desempenho do Doctrine. O problema é que, por padrão, o armazenamento em cache dos metadados da classe e a execução da transformação DQL são feitos em cada solicitação, mas eles podem ser armazenados em cache durante a implementação atual, portanto, há espaço para melhorias.
O primeiro cache que você deve modificar é o cache de consulta . A documentação é muito clara sobre isso:
É altamente recomendável que, em um ambiente de produção, você armazene em cache a transformação de uma consulta DQL para sua contraparte SQL. Não faz sentido fazer essa análise várias vezes, pois ela não muda, a menos que você altere a consulta DQL.
O segundo é o cache de metadados , que evita ter que analisar os metadados da classe provenientes de anotações, YAMLs ou XML em cada solicitação.
A maneira de alterar essas configurações no Symfony 2 é simples. Basta modificar a configuração dos drivers de cache do aplicativo (aqui estamos mudando do valor padrão “array” para “apc”, mas você também pode usar “memcache”, “memcached”, “xcache” ou “serviço”):
doctrine:
orm:
metadata_cache_driver: apc
query_cache_driver: apc
O resultado? Melhoramos em até 100% o desempenho de nossas páginas que usam mais banco de dados.