实战给AW_Blog插件添加缓存(续)
2013-10-27 23:07
155 查看
两年前的文章(实战给AW_Blog插件添加缓存)描述了一个Block Cache的实例,最近发现代码其实写的有点累赘,后台保存时自动触发刷新缓存并不需要自己去写刷新的动作,系统原生的Model继承类Mage_Core_Model_Abstract里已经有实现这个动作的代码,只需要简单的配置下变量就能实现。修改后的方案如下(Block类的所需修改代码不变)
打开AW_Blog_Model_Post这个文件,在头部定义一个常量,再定义一个变量
结束,就这么简单,打开Mage_Core_Model_Abstract文件来看下为什么
从上往下依次看,当Model对象保存完毕时会触发cleanModelCache,cleanModelCache里去根据getCacheTags返回的值去定向刷新tags针对的cache,这样,之前定义的变量$_cacheTag的值所对应的cache就被成功刷新了。如果代码看的不是很明白的话,可以把getCacheTags的返回值输出来看下
2013-10-27T14:02:59+00:00 DEBUG (7): Array
(
[0] => aw_blog
[1] => aw_blog_2
)
数组里的两个元素就是刷新缓存时所指定的cache tag
打开AW_Blog_Model_Post这个文件,在头部定义一个常量,再定义一个变量
const CACHE_TAG = 'aw_blog'; protected $_cacheTag = 'aw_blog';
结束,就这么简单,打开Mage_Core_Model_Abstract文件来看下为什么
protected function _afterSave() { $this->cleanModelCache(); Mage::dispatchEvent('model_save_after', array('object'=>$this)); Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData()); return $this; }
public function cleanModelCache() { $tags = $this->getCacheTags(); if ($tags !== false) { Mage::app()->cleanCache($tags); } return $this; }
public function getCacheTags() { $tags = false; if ($this->_cacheTag) { if ($this->_cacheTag === true) { $tags = array(); } else { if (is_array($this->_cacheTag)) { $tags = $this->_cacheTag; } else { $tags = array($this->_cacheTag); } $idTags = $this->getCacheIdTags(); if ($idTags) { $tags = array_merge($tags, $idTags); } } } return $tags; }
从上往下依次看,当Model对象保存完毕时会触发cleanModelCache,cleanModelCache里去根据getCacheTags返回的值去定向刷新tags针对的cache,这样,之前定义的变量$_cacheTag的值所对应的cache就被成功刷新了。如果代码看的不是很明白的话,可以把getCacheTags的返回值输出来看下
2013-10-27T14:02:59+00:00 DEBUG (7): Array
(
[0] => aw_blog
[1] => aw_blog_2
)
数组里的两个元素就是刷新缓存时所指定的cache tag
相关文章推荐
- 实战给AW_Blog插件添加缓存
- magento Block缓存实例-给AW_Blog插件添加缓存
- 增强AW_Blog插件之后台文章列表添加分类栏
- 实战day06(五)----向业务逻辑中添加缓存
- 25讲项目实战:自定义菜单插件+添加文章+自定义字段插件
- Jenkins项目实战之-钉钉提醒插件二次开发举例2-添加消息内容
- Cordova - 使用Cordova开发iOS应用实战3(添加Cordova控制台插件)
- 增强AW_Blog插件之后台文章编辑新增一图片字段
- 【Redis】redis实战:在业务中添加缓存机制
- 【SSH网上商城项目实战09】添加和更新商品类别功能的实现
- Z-Blog 添加收藏本站
- 《精通Spring4.X企业应用开发实战》读后感第五章(通过编码方式动态添加Bean)
- Eclipse添加快速查找Dao中方法所对应的Mybatis XML映射SQL的插件
- nagios添加主机和写mysql插件
- 【项目实战】---为EasyUI DataGrid的某一动态加载数据列添加超链接,点击超链接触发Onclick方法
- IOS版添加phonegap-录音播放插件教程
- C#插件构架实战 + Visual C#插件构架实战补遗
- MyEclipse 2014 添加SVN 插件
- 为eclipse添加jquery自动提示插件
- 给你的Blog添加经典言论引用