Очистка кэша запросов в Symfony2 / Doctrine
недавно я написал свое первое приложение Symfony2, и все хорошо, за исключением того, что теперь я хочу добавить кэширование запросов для повышения производительности и сокращения ненужных запросов. Я добавил следующие строки в конструктор одного конкретного запроса:
$query->useResultCache(true)
->useQueryCache(true);
после первого запроса, кэш используется, как ожидалось. Я могу проверить это в профиле. Все отлично!
проблема в том, что у меня также есть простая панель администратора, которую я написал, что позволяет пользователю изменять содержимое, но после изменений кэшированная версия все еще используется.
есть ли способ, которым я могу "программно" сказать Symfony2 / Doctrine, чтобы очистить кэш запросов при обновлении данных, или есть способ настроить это?
похоже, что это будет общая проблема, но я не могу найти ничего в Google, относящегося к этой проблеме!
1 ответов
Я рекомендую использовать результат cache id - таким образом, вы можете очистить один конкретный результат cache:
$query->setResultCacheId('my_custom_id');
// or shorter notation with lifetime option
$query->useResultCache(true, 3600, 'my_custom_id');
// to delete cache
$cacheDriver = $entityManager->getConfiguration()->getResultCacheImpl();
$cacheDriver->delete('my_custom_id');
// to delete all cache entries
$cacheDriver->deleteAll();
для получения дополнительной информации об удалении кэша see:
http://docs.doctrine-project.org/en/latest/reference/caching.html#deleting