Magento索引和缓存。我需要两个吗?

时间:2012-02-28 23:40:44

标签: magento

我正在开发一个更新产品数据的导入模块。为了加快这个过程,我将索引设置为手动模式。

$processes = Mage::getSingleton('index/indexer')->getProcessesCollection();
$processes->walk('setMode', array(Mage_Index_Model_Process::MODE_MANUAL));
$processes->walk('save');

导入完成后,我重新索引数据并将索引模式恢复为自动

$processes = Mage::getSingleton('index/indexer')->getProcessesCollection();
$processes->walk('reindexAll');
$processes->walk('setMode', array(Mage_Index_Model_Process::MODE_REAL_TIME));
$processes->walk('save');

但我不确定是否还需要清除缓存。所以我的问题是索引和缓存是如何相关的。例如,如果我清除缓存,它是否还重新索引所有数据?而在另一个网站上,如果我重新索引所有数据,它是否清除缓存?或者,如果我将索引模式设置为手动,是否需要每次都触发?我对此并不十分肯定,我希望有人能肯定地证实这一点。

谢谢

1 个答案:

答案 0 :(得分:1)

Magentos System -> Cache ManagmentSystem -> Index Managment都是独立的功能。如果你重建这样的索引,无论是通过后端还是直接使用reindexAll(),Magento 都不会自动刷新任何缓存,反之亦然。

Do I need both?(缓存和索引)的答案是:它取决于。

如果您在启用缓存COLLECTION_DATA和/或EAV的情况下运行Magento,则应在导入和重新索引产品数据后刷新这些缓存。

刷新是必要的,因为您的导入程序已更新/插入了缓存不知道的产品数据,但没有,因为您已重新编制索引。

如果您在禁用所有缓存的情况下运行Magento,则不需要两者。从技术上讲,无需刷新禁用的缓存。 Magento当然会慢一点,但仍然功能齐全。