缓存 Doctrine 结果 Symfony2

Caching Doctrine results Symfony2

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

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

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

您需要在原则 configuration 中安装和配置缓存驱动程序(result_cache_driver 在您的情况下很重要)。完成此操作后,您可以通过设置 useResultCache(true)

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

勾选this blog post

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

编辑:因为您使用的是 DBAL 而不是 ORM - SymfonyDoctrineBundle 不支持这种开箱即用的缓存,但您可以按照 this 详细指南

自己添加此支持

在开发者模式下,Symfony2 会为每个查询创建一个新的缓存。因此,假设您有很多查询,那么它将一一缓存所有查询。

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