是否有任何关于如何在Symfony2中缓存ACL查询的示例或更好的文档。
我找到了以下内容:
http://api.symfony.com/2.0/Symfony/Component/Security/Acl/Domain/DoctrineAclCache.html
但我不知道如何在我的支票上应用此功能。
答案 0 :(得分:1)
我设法缓存了ObjectIdentities。这有点帮助,但并不多。
在安全* .xml文件中进行了大量挖掘后,我对config.yml进行了以下修改:
config.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并注入实体管理器的结果缓存,您也可以缓存这些查询。