目录产品的Magento索引及其属性

Kno*_*ing 3 indexing magento

我对Magento索引过程有一些疑问:

  • 首先,为什么Magento在新添加/修改每个产品或其任何属性后,不会以编程方式执行索引过程?当索引过程非常重要且可以通过编程方式完成时,为什么管理员需要进行索引?
  • 在每个索引过程中,是否所有产品都已编入索引(包括那些已经编入索引的产品),何时单击"Reindex数据"链接,或者仅对非索引产品编制索引?
  • 如果我想查看/调试每个索引过程所花费的时间,那么我需要做什么以及如何做?

Jon*_*Day 5

三部分答案,所以这应该值三分,对吗?:)

1)可能因为索引往往是计算密集型任务,因此无论何时保存产品(通常在工作时间),管理员都可以选择低负载时段,或通过cron进行调度以便进行索引编制.在典型的低负荷时间.

2)所有产品都重新编制索引.如果查看Mage_CatalogIndex_Model_Indexer :: plainReindex(),您将看到它在执行clear所有活动产品索引之前执行删除所有索引数据的操作.

$this->_getResource()->clear(
            $attributeCodes,
            $priceAttributeCodes,
            count($priceAttributeCodes)>0,
            count($priceAttributeCodes)>0,
            count($priceAttributeCodes)>0,
            $products,
            $stores
);

<snip/>

$collection = $this->_getProductCollection($store, $products);
$collection->addAttributeToFilter(
         'status',
          array('in'=>Mage::getModel('catalog/product_status')->getSaleableStatusIds())
);
$this->_walkCollection($collection, $store, $attributeCodes);
Run Code Online (Sandbox Code Playgroud)

_walkCollection方法为每个产品创建索引.

3)您可以打开Profiler.有关如何使用它的一些很棒的博客 文章.你可以换的关键代码Mage_CatalogIndex_Model_IndexerVarien_Profiler::start('Indexer')等检查所花费的时间.

  • IIRC =如果我记得正确 - 基本上它意味着我很确定这是正确的,但不是100%肯定! (3认同)