Очистка кэша запросов в 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