我在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