Обновление кэша Magento при сохранении плагина - PullRequest
2 голосов
/ 06 марта 2012

Я написал простой плагин Magento, который просто перечисляет все подкатегории, которые включены с данным родительским идентификатором.

Пользователь просто выбирает идентификатор родительской категории у администратора, используя созданную мной вкладку плагина.

Чтобы ускорить процесс, я добавил к плагину блочное кэширование, используя следующий код

 $this->addData(array(
            'cache_lifetime' => 86400,
            'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG)
        ));

Пока это работает хорошо, как будто подкатегория включена / отключена, кеш аннулируется и заменяется. Однако, если я изменяю идентификатор родительской категории в админке, изменения не будут видны, пока весь блок кеша не обновится с помощью system-> управление кешем.

То, что я хотел бы сделать, это иметь метод, при котором, когда пользователь нажимает сохранить в админке, кэш очищается только для этого одного блока, а не обновляет все.

Как бы я поступил об этом? я думаю, какой-то наблюдатель событий на событие сохранения в adminhtml? Однако я не знаю, как это сделать.

Мне интересно, какие мысли / предложения могут быть у других людей.

Большое спасибо

Ян Кэссиди

Ответы [ 2 ]

3 голосов
/ 11 марта 2012

Вы можете использовать Event Observer для очистки кеша. Вы можете выполнить этот урок , чтобы настроить своих наблюдателей, а затем наблюдать событие catalog_category_save_after.

Чтобы очистить кеш, используйте Mage::app()->getCacheInstance()->cleanType(Mage_Catalog_Model_Category::CACHE_TAG); в вашей модели наблюдателя.

PS: возможно, вам придется настроить <events> на <admin> или <adminhtml> вместо <globals>.

0 голосов
/ 18 ноября 2013

вы можете использовать генерацию наблюдателя при обновлении клика в управлении кешем.после этого вы можете очистить кеш по кеш-тегу или кеш-идентификатору.Это решение для очистки кэша по кэш-идентификатору. как обновить кеш в пользовательском типе кеша

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...