Mettre en cache une valeur qui est basée sur les paramètres de configuration et fiscaux
Question
Je calcule une valeur qui est basée sur les paramètres de configuration et sur les taux d'imposition.
Comment puis-je mettre en cache une manière qu'il est effacé automatiquement lorsque l'un de ces infos changements?
Est-ce que tout cela en utilisant les balises droite, puis être effacé automatiquement?
La solution
Pour la partie de configuration, vous pouvez ajouter la balise de cache de configuration lors de l'enregistrement du produit:
Mage::app()->saveCache($data, $id, array(
Mage_Core_Model_Config::CACHE_TAG
), $lifeTime=false);
qui supprimera votre élément mis en cache chaque fois que cette balise est effacé.
Malheureusement, cela ne couvre pas les paramètres fiscaux et il n'y a pas d'étiquette spécifique d'impôt. vous pouvez plutôt créer votre propre étiquette de cache (MY_TAX_CACHE_TAG
).
Mage::app()->saveCache($data, $id, array(
Mage_Core_Model_Config::CACHE_TAG,
'MY_TAX_CACHE_TAG'
), $lifeTime=false);
vous auriez plus besoin de créer un observateur sur tax_settings_change_after
.
class Observer
{
public function taxSettingsChangeAfter($observer)
{
Mage::app()->cleanCache('MY_TAX_CACHE_TAG');
}
}
Autres conseils
Ceci est une stratégie pour sauver un élément à cache, et expirant après un certain temps (dans cet exemple 10800 secondes ou 3 heures).
$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);
}
source : http: // www.g31zone.com/?tag=magento-save-data-to-cache
Pour effacer cette valeur spécifique du cache:
To remove individual values from the cache, we use:
$cache->remove("mycachename");
source : http: // www. nicksays.co.uk/developers-guide-magento-cache/
Voir aussi: http://alanstorm.com/magento_config_a_critique_and_caching