Por que o magento re-indexa os preços em cada caixa?

8

Se você procurar em Mage_CatalogInventory_Model_Observer :: reindexQuoteInventory (), ele chamará a seguinte linha: Mage::getResourceSingleton('catalog/product_indexer_price')->reindexProductIds($productIds);

O reindexQuoteInventory()é chamado nos seguintes eventos:

  1. sales_model_service_quote_submit_success
  2. checkout_submit_all_after (via Mage_CatalogInventory_Model_Observer::checkoutAllSubmitAfter())

Isso é conhecido como um dos problemas por contribuir para o bloqueio de problemas em sites ocupados com um alto volume de compras.

Minhas perguntas são:

  1. Por que os preços dos produtos são indexados novamente em cada caixa?
  2. Que efeito tem ao removê-lo?
  3. Se for usado para regras de catálogo, certamente serão apenas regras muito específicas?
john-jh
fonte
O óbvio seria regras de promoção (3.), mas eu (sem verificar o núcleo) suspeitaria que outros elementos em torno da exibição dinâmica de preços (estruturas de preços em camadas, com base na quantidade disponível de ações) seriam afetados adversamente quando as ações diminuírem.
Ben Lessani - Sonassi

Respostas:

4

A decisão de mostrar ou ocultar um produto com base nessa configuração é implementada pelo Índice de Preços do Produto.

Você pode verificar isso alterando a configuração para "Sim" e visualizando uma categoria com um produto fora de estoque; você vê que o produto está presente. Se você alterar a configuração para "Não" e exibir a categoria novamente, verá que o produto esgotado ainda está presente. Você também notará que esses dois índices agora precisam ser atualizados:

Atributos do produto (catalog_product_attribute) Preços do produto (catalog_product_price)

Se você atualizar apenas o índice "Atributos do produto", o produto ainda estará visível. Se você atualizar o índice "Preços do produto", ele desaparecerá; portanto, o índice "Preços do produto" será responsável pela implementação dessa configuração.

catalog_product_index_price é a tabela principal , pois é a única incluída em todas as consultas ao carregar uma categoria ou página de produto

Jignesh
fonte
Obrigado por boa resposta, apenas um pouco imho erro catalog_product_index_pricesó é utilizado na categoria de página / pesquisa, mas não em páginas de produtos
Desde