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