缓存原则结果是 Symfony2


Caching Doctrine results Symfony2

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

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

可以看到我自己解决这个问题的唯一方法是缓存一些查询结果,但我该怎么做。除非有不同的处理此类问题的方法。

您需要

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

$cachedResult = $doctrine->getManager()
    ->createQueryBuilder()
    ->(...)
    ->useResultCache(true)
    ->(...)

查看此博客文章

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

编辑:由于您使用的是DBAL而不是使用ORM - SymfonyDoctrineBundle不支持这种开箱即用的缓存,但您可以按照此详细指南自行添加此支持

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

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