我在Zend Framework 2项目中使用Doctrine 2 ORM,我想澄清有关缓存的一些细节。ZF2应用中的学说ORM缓存
主义的配置看起来像
return array(
'doctrine' => array(
'driver' => array(
'application_entities' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'doctrine_cache_entities', // 1
'paths' => array(__DIR__ . '/../src/Application/Entity')
),
'orm_default' => array(
'drivers' => array(
'Application\Entity' => 'application_entities',
),
),
),
'configuration' => array(
'orm_default' => array(
'metadata_cache' => 'doctrine_cache_metadata', // 2
'query_cache' => 'doctrine_cache_query', // 3
'result_cache' => 'doctrine_cache_result', // 4
'hydration_cache' => 'doctrine_cache_hydration', // 5
)
),
),
);
在这里我们可以看到5种不同类型的缓存:
- 实体缓存
- 元数据缓存
- 查询缓存
- 结果缓存
- 水合作用约车
但只有3学说控制台工具选项清除缓存:
- ORM:清除缓存:元数据清除各种缓存驱动程序的所有元数据缓存。
- orm:clear-cache:query清除各种缓存驱动程序的所有查询缓存。
- orm:clear-cache:result清除各种缓存驱动程序的所有结果缓存。
那么我怎么能清除其余的缓存(特别是实体缓存)考虑到它可以存储在不同的地方,不一定在文件系统。
而第二个问题:
如果所有这些缓存在生产中同时使能(这个问题主要是关于实体和元数据高速缓存,因为它们似乎包含类似的数据)?
** NB *驱动程序配置中的chache
信息来自here
也许实体缓存刷新每次使用有关实体学说命令行工具时,和水化缓存每个请求后刷新。 – Carlos