【问题标题】:Clearing query cache in Symfony2 / Doctrine在 Symfony2 / Doctrine 中清除查询缓存
【发布时间】:2013-03-11 16:20:06
【问题描述】:

我最近编写了我的第一个 Symfony2 应用程序,一切都很好,除了现在我想添加一些查询缓存以提高性能并减少不需要的查询。我在一个特定查询的构建器中添加了以下几行:

$query->useResultCache(true)
      ->useQueryCache(true);

在第一次请求之后,缓存会按预期使用。我可以在探查器中验证这一点。一切都很好!

问题是我还写了一个简单的管理面板,允许用户修改内容,但更改后缓存的版本仍在使用中。

有没有一种方法可以“以编程方式”告诉 Symfony2 / Doctrine 在我更新数据时清除查询缓存,或者有没有一种配置方法?

这似乎是一个常见问题,但我在 Google 上找不到与该问题相关的任何内容!

【问题讨论】:

  • 您能否让我知道您使用分析器检查缓存的工作情况,特别是使用分析器。我尝试检查数据库查询的数量,因为我每次都得到相同数量的查询,之前和之后应该执行缓存,所以我不知道它是否工作或它是否应该这样做,无论如何,提示??

标签: caching symfony doctrine


【解决方案1】:

我建议使用结果缓存 id - 这样您就可以清除一个特定的结果缓存:

$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();

有关缓存删除的更多信息,请参阅:
http://docs.doctrine-project.org/en/latest/reference/caching.html#deleting

【讨论】:

  • 太棒了!谢谢你。完美运行!
猜你喜欢
  • 1970-01-01
  • 2014-11-13
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2014-10-13
相关资源
最近更新 更多