Кэшируйте значение, основанное на настройках конфигурации и налогов
Я вычисляю значение, основанное на параметрах конфигурации и налоговых ставках.
Как я могу кэшировать его таким образом, чтобы он автоматически очищался при изменении одной из этих сведений?
Все дело в том, чтобы использовать правильные теги, а затем они будут автоматически очищены?
2 answers
Для части конфигурации вы можете добавить тег кэша конфигурации при сохранении элемента:
Mage::app()->saveCache($data, $id, array(
Mage_Core_Model_Config::CACHE_TAG
), $lifeTime=false);
, который будет удалять ваш кэшированный элемент каждый раз, когда этот тег будет очищен.
К сожалению, это не распространяется на настройки налога, и нет тега, специфичного для налога. Вместо этого вы можете создать свой собственный тег кэша (MY_TAX_CACHE_TAG
).
Mage::app()->saveCache($data, $id, array(
Mage_Core_Model_Config::CACHE_TAG,
'MY_TAX_CACHE_TAG'
), $lifeTime=false);
Кроме того, вам потребуется создать наблюдателя на tax_settings_change_after
.
class Observer
{
public function taxSettingsChangeAfter($observer)
{
Mage::app()->cleanCache('MY_TAX_CACHE_TAG');
}
}
Это стратегия сохранения элемента в кэше и истечения его срока действия через некоторое время (в данном примере 10800 секунд или 3 часа).
$mydataforcache = "My data for cache";
$cache_name = "mycachename";
$CACHEDATA = MAGE::app()->loadCache($cache_name);
if (isset($CACHEDATA) && ($CACHEDATA != "")){
// Use data
echo $CACHEDATA;
} else {
// Save data to cache
Mage::app()->saveCache($mydataforcache, $cache_name, array(), 10800);
}
источник: http://www.g31zone.com/?tag=magento-save-data-to-cache
Чтобы удалить это конкретное значение из кэша:
To remove individual values from the cache, we use:
$cache->remove("mycachename");
источник: http://www.nicksays.co.uk/developers-guide-magento-cache/
См. также: http://alanstorm.com/magento_config_a_critique_and_caching