Magentoコレクションデータコレクションデータファイルのときに拡張キャッシュを更新したいと思います。COLLECTION_DATAキャッシュが更新され、他のイベントに対しても更新されます。これにより、このキャッシュがクリーンアップされます。
私はカスタムクラスを持っています、主要な部分は次のとおりです:
$this->_usecache = Mage::app()->useCache('collections');
if ($this->_usecache){
$cache = Mage::app()->getCache();
$key = "mycategory".$this->_config['rootid'];
$this->tmpAllItems = $cache->load($key);
} else {
$this->tmpAllItems = false;
}
if ($this->tmpAllItems === false){
$this->tmpAllItems = array();
$model = Mage::getModel('catalog/category');
$categories = $model->getCategories($this->_config['rootid'], 0, true, false, true);
$k = array_keys($categories->getNodes());
$parent = $categories[$k[0]]->getParent();
$this -> treeToFlat($parent);
if ($this->_usecache)
{
$cache->save(serialize($this->tmpAllItems),
$key,
array(Mage_Catalog_Model_Category::CACHE_TAG,
Mage_Core_Model_App::CACHE_TAG)
);
} else {
$this->tmpAllItems = unserialize($this->tmpAllItems);
}
return $this->tmpAllItems;
したがって、私の目標は、Mage_Catalog_Model_Category :: CACHE_TAGがクリーンアップされたときに、このキャッシュもリフレッシュ/クリーンアップすることです。これはどのように可能ですか?
更新#1
使った時
$cache = Mage::app()->getCacheInstance();
それ以外の
$cache = Mage::app()->getCache();
クリーンが機能し始めました。カテゴリがあるとリストが更新されましたが、何も起こらなければキャッシュのままでした。また、誰かがこの変更でこれが可能である理由を説明できますか?
解決
...
$cache->save(serialize($this->tmpAllItems),$key,array('my_cache_tag'));
....
次にクリアします:
$cache = Mage::app()->getCache(); foreach($cache->getTags() as $tag){ if(strpos($tag, 'my_cache_tag')){ $ids = $cache->getIdsMatchingAnyTags(array($tag)); foreach($ids as $id){ $cache->remove($id); } } }