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