Magento1: Сбрасываем кеш Magento по крону

В Magento есть полезная функция кеширования страниц и контента.

Кеш помогает “ускорить” загрузку страниц и отображения контента в Magento.
Но если был изменен/добавлен товар/категория/атрибут или страница/статический блок то понадобится обновить кеш Magento, чтоб страницы корректно отображали актуальное содержимое интернет-магазина Magento.

Кеш Magento можно сбросить (обновить) вручную, через админ панель Magento.

Но что делать если в интернет магазине Magento используются интеграции со сторонними(thirty part) сервисами. К примеру обновляются продукты или добавляются новые продукты. Или просто работаем удаленно через SOAP API Magento.

Понятно что постоянно заходить в админ панель Magento и сбрасывать кеш – не выход.

Для сбрасывания кеша в Magento можно написать небольшой PHP-скрипт и запускать по-расписанию (по-крону).

Ниже пример простого PHP-скрипта для обновления/сброса кеша в Magento.

/*подключим app/Mage.php*/
require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR. 'app' . DIRECTORY_SEPARATOR . 'Mage.php';

$app = Mage::app('admin', 'store');
if($app->cleanCache()) {
    Mage::log("Successfully was cleared the cache.");
    //echo 'Successfully was cleared the cache.';
} else {
    Mage::log("An error occurred while flushing the cache.");
    //echo 'An error occurred while flushing the cache.';
}

Положим PHP-скрипт в файл shell/cacheRefresh.php и добавим в задачи для крона (к примеру раз в 2 часа).

Теперь кеш в Magento будет обновляться автоматически.

Еще пример обновления разных типов кеша Magento.

Mage::app()->getCacheInstance()->cleanType('block_html');
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => 'block_html'));

Mage::app()->getCacheInstance()->cleanType('layout');
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => 'layout'));

Mage::app()->getCacheInstance()->cleanType('collections');
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => 'collections'));

Mage::app()->getCacheInstance()->cleanType('eav');
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => 'eav'));