我正在开发一个更新产品数据的导入模块。为了加速这个过程,我把索引设置为手动模式。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');
但我不知道我是否还需要清除缓存。所以我的问题是如何索引和缓存相关。例如,如果我清除缓存,它是否也重新索引所有数据?而在另一个网站上,如果我重新索引所有数据,它是否清除缓存?或者如果我将索引模式设置为手动,每次都需要触发两个进程?我不太确定这一点,我希望任何人都可以肯定。
谢谢
我对于reindex有点困惑。何时需要重新索引?据我所知,reindex将数据库中的所有数据放入一行。 Magento首先检查这一行,如果它不存在,它会从许多不同的表中获取数据。当您保存产品时,它会更新所有表格,如果已启用reindex,则还会更新所有数据写入的行以便更快地访问。那是对的吗? – JohnyFree 2012-02-29 15:01:57
你说的是重新索引'Product Flat Data',对吧?如果是这样,是的,你是对的。 Magento在重新索引“产品平面数据”时,根据当前的产品EAV值重建所有'catalog_product_flat_ *'表。当“产品平面数据”索引器处于“MODE_MANUAL”状态时保存产品时,只会更新EAV表;平坦表格保持不变。当Magento将索引器进程状态更改为STATUS_REQUIRE_REINDEX时,通常需要重新编译。如果您扫描该常数的Magento源代码,您可以看到这种情况何时发生,恰好适用于各种索引器。 – 2012-03-01 17:26:11
“从技术上讲,不需要刷新禁用的缓存。” - 即时通讯发现即使我的缓存禁用它仍然活跃,我必须清除它,例如看到产品说明中的变化... – 2013-05-30 07:08:48