Я работаю над проектом Symfony2. В моем проекте используется база данных для хранения данных и Doctrine2 для извлечения этих данных.
По мере роста данных в базе данных запросы стали очень медленными, и все веб-приложение занимает около 2 минут для загрузки или вообще не загружается.
Единственный способ, которым я могу убедиться, что я сам это исправляю, – это кешировать некоторые запросы, но как я могу это сделать. Если нет другого способа решения этой проблемы.
Вам нужно, чтобы ваш драйвер кэша был установлен и настроен в конфигурации доктрины ( result_cache_driver
важен в вашем случае). Как только вы это сделаете, вы можете заставить Doctrine
использовать кэш результатов, установив useResultCache(true)
$cachedResult = $doctrine->getManager() ->createQueryBuilder() ->(...) ->useResultCache(true) ->(...)
Проверьте это сообщение в блоге
ПРИМЕЧАНИЕ . По умолчанию, в среде dev, кеш результатов не будет использоваться
EDIT : поскольку вы используете DBAL
и не используете ORM
– SymfonyDoctrineBundle не поддерживает этот вид кеш-кода, но вы можете добавить эту поддержку самостоятельно, следуя этому подробному руководству
В режиме разработчика Symfony2 создает новый кеш для каждого запроса. Поэтому предположим, что у вас много запросов, и он будет кэшировать все запросы один за другим.
Это занимает больше времени, чем в режиме производства, потому что в режиме производства кеш будет храниться только один раз.