我现在使用的是教义2而没有缓存任何内容。我想在Doctrine中启用一些缓存系统,但看起来你必须在任何地方手动管理它:
$memcache = new Memcache();
$memcache->connect('memcache_host', 11211);
$cacheDriver = new \Doctrine\Common\Cache\MemcacheCache();
$cacheDriver->setMemcache($memcache);
$cacheDriver->save('cache_id', 'my_data');
...
$cacheDriver->delete('cache_id');
我想知道Doctrine是否可以自动管理。例如:
缓存启用,我通过id请求User
实体,在其缓存中搜索Doctrine,无法找到用户,获取它,将其设置到缓存中,然后返回。
我第二次获取,Doctrine返回缓存User
。
User
(或其任何关系)Doctrine检测它并破坏此对象的缓存User
,Doctrine在缓存中没有它,获取它并使用更新的用户设置缓存然后返回它这可能吗?
干杯, 马克西姆
答案 0 :(得分:3)
仅在resultset cache中支持您在Doctrine ORM中查找的内容,并且仅适用于DQL查询生成的SQL查询的结果。
您要查找的功能的确切名称是"second-level cache",Doctrine ORM尚不支持该功能,但目前正在开发{希望在版本2.5
中可用){{3} 3}}
目前,如果确实需要,您必须在自己的服务层中处理此类缓存。
答案 1 :(得分:0)
如果您通过它的主键拉动实体,缓存将由学说的“身份地图”完成,如此处所述http://doctrine-orm.readthedocs.org/en/latest/reference/unitofwork.html