Результаты доктрины кэширования Symfony2

Я работаю над проектом Symfony2. В моем проекте используется база данных для хранения данных и Doctrine2 для извлечения этих данных.

По мере роста данных в базе данных запросы стали очень медленными, и все веб-приложение занимает около 2 минут для загрузки или вообще не загружается.

Единственный способ, которым я могу убедиться, что я сам это исправляю, – это кешировать некоторые запросы, но как я могу это сделать. Если нет другого способа решения этой проблемы.

Solutions Collecting From Web of "Результаты доктрины кэширования Symfony2"

Вам нужно, чтобы ваш драйвер кэша был установлен и настроен в конфигурации доктрины ( result_cache_driver важен в вашем случае). Как только вы это сделаете, вы можете заставить Doctrine использовать кэш результатов, установив useResultCache(true)

 $cachedResult = $doctrine->getManager() ->createQueryBuilder() ->(...) ->useResultCache(true) ->(...) 

Проверьте это сообщение в блоге

ПРИМЕЧАНИЕ . По умолчанию, в среде dev, кеш результатов не будет использоваться

EDIT : поскольку вы используете DBAL и не используете ORM – SymfonyDoctrineBundle не поддерживает этот вид кеш-кода, но вы можете добавить эту поддержку самостоятельно, следуя этому подробному руководству

В режиме разработчика Symfony2 создает новый кеш для каждого запроса. Поэтому предположим, что у вас много запросов, и он будет кэшировать все запросы один за другим.

Это занимает больше времени, чем в режиме производства, потому что в режиме производства кеш будет храниться только один раз.