为什么magento会在每次结帐时对索引重新定价?


8

如果您在Mage_CatalogInventory_Model_Observer :: reindexQuoteInventory()中查看,它将调用以下行: Mage::getResourceSingleton('catalog/product_indexer_price')->reindexProductIds($productIds);

reindexQuoteInventory()被称为对下列事项:

  1. sales_model_service_quote_submit_success
  2. checkout_submit_all_after(通过Mage_CatalogInventory_Model_Observer::checkoutAllSubmitAfter()

这被称为导致锁定大量购买的繁忙站点上的问题的问题之一。

我的问题是:

  1. 为什么每次结帐时都会重新索引产品的价格?
  2. 删除它有什么影响?
  3. 如果确定将其用于目录规则,那将只是非常具体的规则?

很明显的一个促销规则(3.),但是我会(不检查核心)怀疑动态价格显示周围的其他元素(基于可用库存数量的分层定价结构)会在库存减少时受到不利影响。
Ben Lessani-Sonassi 2014年

Answers:


4

根据此设置决定是否显示或隐藏产品由产品价格指数决定。

您可以通过将设置更改为“是”来进行验证,然后查看产品缺货的类别。您会看到该产品存在。如果然后将设置更改为“否”并再次查看类别,您将看到仍然存在缺货产品。您还将注意到,这两个索引现在需要刷新:

产品属性(catalog_product_attribute)产品价格(catalog_product_price)

如果仅刷新“产品属性”索引,则该产品仍然可见,如果刷新“产品价格”索引,则该产品消失,因此“产品价格”索引负责此设置的实现。

catalog_product_index_price主表,因为它是加载类别或产品页面时所有查询中唯一包含的


谢谢您的好答案,Imho catalog_product_index_price只是在类别/搜索页面中使用了错误,而在产品页面中则没有使用
Fra Fra
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.