我正在开发一个Symfony2项目。我的项目使用数据库来存储数据,使用Doctrine2来检索数据。
随着数据库中的数据增长,查询变得非常缓慢,整个Web应用程序需要大约2分钟才能加载或根本不加载。
我能看到自我修复的唯一方法是缓存一些查询结果,但我该怎么做呢。除非有不同的方式处理这样的问题。
答案 0 :(得分:17)
您需要在学说configuration中安装和配置缓存驱动程序(result_cache_driver
对您来说很重要)。完成此操作后,您可以通过设置Doctrine
useResultCache(true)
使用结果缓存
$cachedResult = $doctrine->getManager()
->createQueryBuilder()
->(...)
->useResultCache(true)
->(...)
注意:默认情况下,在开发环境中,不会使用结果缓存
编辑:当您使用DBAL
而不使用ORM
时 - SymfonyDoctrineBundle不支持开箱即用的此类缓存,但您可以添加此功能按照this详细指南
答案 1 :(得分:0)
在开发人员模式下,Symfony2会在每个查询上创建一个新缓存。因此,假设您有许多查询,那么它将逐个缓存所有查询。
这比生产模式需要更多时间,因为在生产模式下,缓存只会存储一次。