有没有关于如何在 Symfony2 中缓存 ACL 查询的示例或更好的文档。
我发现以下内容:
http://api.symfony.com/2.0/Symfony/Component/Security/Acl/Domain/DoctrineAclCache.html
但我不完全知道如何在我的支票上应用它。
有没有关于如何在 Symfony2 中缓存 ACL 查询的示例或更好的文档。
我发现以下内容:
http://api.symfony.com/2.0/Symfony/Component/Security/Acl/Domain/DoctrineAclCache.html
但我不完全知道如何在我的支票上应用它。
我设法缓存了 ObjectIdentities。这有点帮助,但不多。
在对 security*.xml 文件进行了大量研究之后,我对 config.yml 进行了以下修改:
配置.yml:
doctrine:
orm:
result_cache_driver:
type: apc
security:
acl:
cache:
id: security.acl.cache.doctrine
prefix: my_acl_prefix_
这只会启用 ObjectIdentities 的缓存,但Symfony\Component\Security\Acl\Dbal\AclProvider::getAncestorIds()
在调用时会发生许多其他查询。该方法直接执行 SQL 查询,并且不使用缓存。在 2.2 和 2.3 方法中有一条注释说:
// FIXME: skip ancestors which are cached
同样代表该类中不使用结果缓存的其他几个方法。
我想通过实现您自己的 AclProvider 并注入实体管理器的结果缓存,您也可以缓存这些查询。