我正在开发一个更新产品数据的导入模块。为了加快这个过程,我将索引设置为手动模式。
$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');
但我不确定是否还需要清除缓存。所以我的问题是索引和缓存是如何相关的。例如,如果我清除缓存,它是否还重新索引所有数据?而在另一个网站上,如果我重新索引所有数据,它是否清除缓存?或者,如果我将索引模式设置为手动,是否需要每次都触发?我对此并不十分肯定,我希望有人能肯定地证实这一点。
谢谢
答案 0 :(得分:1)
Magentos System -> Cache Managment
和System -> Index Managment
都是独立的功能。如果你重建这样的索引,无论是通过后端还是直接使用reindexAll()
,Magento 都不会自动刷新任何缓存,反之亦然。
Do I need both?
(缓存和索引)的答案是:它取决于。
如果您在启用缓存COLLECTION_DATA
和/或EAV
的情况下运行Magento,则应在导入和重新索引产品数据后刷新这些缓存。
刷新是必要的,因为您的导入程序已更新/插入了缓存不知道的产品数据,但没有,因为您已重新编制索引。
如果您在禁用所有缓存的情况下运行Magento,则不需要两者。从技术上讲,无需刷新禁用的缓存。 Magento当然会慢一点,但仍然功能齐全。