Я работаю над проектом Symfony2, используя Doctrine. Я хочу оптимизировать производительность API, добавив кэш к запросам.
Я рассмотрел несколько вариантов, таких как:
Не уверен, с какой из них я должен идти, но для меня кажется, что кэширование данных на уровне доктрины было бы наиболее подходящим.
Говоря, что я хотел бы, чтобы кто-то помог мне или руководил тем, как настроить кеш доктрины и объяснить, как это работает.
Т.е. у меня есть этот запрос:
class QueryFactory protected $connect; public function __construct(Connection $connection) { $this->connect = $connection; } private function myQuery() { return $this->connect->createQueryBuilder() ->select('user_id') ->from('users', 'u') ->where('u.user_id = 2'); } }
Как добавить кеш к этому запросу? Есть ли какая-нибудь библиотека Доктрины, которую мне нужно вводить, любую вещь, которую мне нужно use
?
В doctrine
для кеширования запросов или результатов вы можете сделать следующее:
private function myQuery() { return $this->connect->createQueryBuilder() ->select('user_id') ->from('users', 'u') ->where('u.user_id = 2') ->getQuery() ->useQueryCache(true) // here ->useResultCache(true); // and here }
Проверьте документ для получения дополнительной информации об этих методах. Это заставит your
кэш-драйвер работать – неважно, какой драйвер вы используете.
Чтобы настроить Symfony
на использование определенного драйвера запроса, вам необходимо настроить свои настройки в config.yml
– проверьте это, чтобы просмотреть полный список параметров. Что важно в вашем кеше (это пример конфигурации apc
):
entity_managers: some_em: query_cache_driver: apc metadata_cache_driver: apc result_cache_driver: apc
Вы также можете проверить эту и эту запись в блоге