缓存Doctrine结果Symfony2

时间:2015-01-12 09:57:37

标签: php symfony doctrine-orm

我正在开发一个Symfony2项目。我的项目使用数据库来存储数据,使用Doctrine2来检索数据。

随着数据库中的数据增长,查询变得非常缓慢,整个Web应用程序需要大约2分钟才能加载或根本不加载。

我能看到自我修复的唯一方法是缓存一些查询结果,但我该怎么做呢。除非有不同的方式处理这样的问题。

2 个答案:

答案 0 :(得分:17)

您需要在学说configuration中安装和配置缓存驱动程序(result_cache_driver对您来说很重要)。完成此操作后,您可以通过设置Doctrine

使useResultCache(true)使用结果缓存
$cachedResult = $doctrine->getManager()
    ->createQueryBuilder()
    ->(...)
    ->useResultCache(true)
    ->(...)

检查this blog post

注意:默认情况下,在开发环境中,不会使用结果缓存

编辑:当您使用DBAL而不使用ORM时 - SymfonyDoctrineBundle不支持开箱即用的此类缓存,但您可以添加此功能按照this详细指南

自行支持

答案 1 :(得分:0)

在开发人员模式下,Symfony2会在每个查询上创建一个新缓存。因此,假设您有许多查询,那么它将逐个缓存所有查询。

这比生产模式需要更多时间,因为在生产模式下,缓存只会存储一次。