В 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'));