Почему 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. Если он используется для правил каталога, наверняка, это будут только очень конкретные правила?
джон-JH
источник
Очевидным может быть промо-правила (3.), но я бы (без проверки ядра) подозревал, что другие элементы, связанные с динамическим отображением цены (многоуровневая структура ценообразования, основанная на количестве имеющихся акций), будут отрицательно сказываться при снижении запасов.
Бен Лессани - Сонасси

Ответы:

4

Решение о том, показывать или скрывать продукт на основе этого параметра, принимается индексом цены продукта.

Вы можете проверить это, изменив настройку на «Да», а затем просмотрев категорию с отсутствующим продуктом; Вы видите, что продукт присутствует. Если вы затем измените настройку на «Нет» и снова просмотрите категорию, вы увидите, что товара нет в наличии. Вы также заметите, что эти два индекса теперь нуждаются в обновлении:

Атрибуты продукта (catalog_product_attribute) Цены продуктов (catalog_product_price)

Если вы затем обновите только индекс «Атрибуты продукта», продукт все еще будет виден, если вы затем обновите индекс «Цены на товары», он исчезнет, ​​поэтому за реализацию этого параметра отвечает индекс «Цены на товары».

catalog_product_index_price - это главная таблица , так как она единственная, которая включается в любые запросы при загрузке категории или страницы продукта.

Jignesh
источник
Спасибо за хороший ответ, только небольшая ошибка imho catalog_product_index_priceиспользуется только на странице категории / поиска, но не на страницах продукта
Fra