Я получаю следующее сообщение об ошибке несколько раз в день, и мои знания о внутренней работе Magento CE 1.9.0.1 достаточно тонкие, поэтому я не знаю, является ли это нормальным, консультативным поведением от Magento или оно говорит У меня плохая проблема.
Вот сообщение:
Один или несколько типов кэша признаны недействительными: блокирует вывод HTML. Нажмите здесь, чтобы перейти к управлению кэшем и обновить типы кэша.
Обновление этого конкретного кеша устраняет проблему на пару часов или около того.
Я сейчас не редактирую макеты, продукты и т. Д., Вообще ничего.
Что не так и как я могу это исправить?
ce-1.9.0.1
block-cache
Дэйв Дж
источник
источник
Ответы:
Во-первых, важно понимать, что это не ошибка, это просто уведомление.
Может быть множество причин, по которым кеш блоков становится недействительным из-за обновлений продуктов, изменений правил цены каталога и сторонних расширений. Также запуск cronjobs может привести к тому, что блочные кэши также станут недействительными.
Доступны некоторые расширения сообщества (перечислены ниже), которые обновят ваши блоки по мере того, как они станут недействительными.
https://github.com/tomasinchoo/Inchoo_InvalidatedBlockCacheFix
https://github.com/mklooss/Loewenstark_InvalidCache
источник
Это ошибка.
Существует проблема задания CRON (публикация 1.9.?), Которая запускает и делает недействительным HTML-кэш, что приводит к проблемам (например, в моем случае не удалось перенести скидку на цену в корзину - поэтому с клиента будет взиматься неправильная сумма).
Нам не нужно запускать расширение, чтобы исправить возникшую проблему!
источник
Это стандартная операция Magento с 1.6.xx и выше. Что-то всегда вызывает случайную аннулирование html-блока.
Я просто настроил наблюдателя, который запускается на периодической работе cron, устанавливая любой интервал, который кажется подходящим.
Observer.php
config.xml
источник
Этот недействительный индикатор кэша, вероятно, связан с cron dailyCatalogUpdate. Он отвечает за применение / обновление правил каталога.
Раз в день звонит
Mage::getSingleton('catalogrule/rule')->applyAll();
.Внутри кода этого метода есть вызов
$this->_invalidateCache()
, который , в свою очередь , вызывает$this->_app->getCacheInstance()->invalidateType()
наblock_html
кэш.Проблема заключается в том, что он делает кэш недействительным без каких-либо проверок, чтобы определить, действительно ли он все еще действителен. Для меня это лучше, чем не делать недействительной кэш-память, потому что тогда вы можете, по крайней мере, знать, что она может быть недействительной, и использовать что-то вроде того, что Fiasco Labs предложила очистить (потенциально) недействительные кэшированные данные.
Затем принимается решение о том, хотите ли вы допустить ошибку на стороне:
А) Показывать клиентам неправильную цену, но сохранять кеш и, таким образом, иметь меньшую нагрузку на сервер
или
B) Отображение правильной цены, но с большим количеством ошибок кэша и, следовательно, более высокой нагрузкой на сервер.
В компьютерной науке есть две сложные вещи: именование вещей и аннулирование кэша .
источник
Смотрите здесь решение: https://magento.stackexchange.com/a/72687
В основном измените функцию dailyCatalogUpdate с app / code / local / Mage / CatalogRule / Model / Observer.php на
источник