博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
magento Block缓存实例-给AW_Blog插件添加缓存
阅读量:2428 次
发布时间:2019-05-10

本文共 1685 字,大约阅读时间需要 5 分钟。

            aheadworks公司的插件可以算是Magento所有免费插件中最有名也是使用最广泛的一个插件了,就我自己来说,也是每个项目的必备插件(我一般用来做为新闻插件使用)。今天拿它做例子演示下给Block添加缓存(Cache)。

     

   这个截图是我某个项目使用aw_blog插件的实例,使用AW_Blog_Block_Blog这个block文件在首页输出某个新闻类别下的新闻列表,aw_blog插件本身是没给输出内容做过缓存处理的,也就是说,即便你一天或几天才更新一次新闻,页面每次载入时依然要从数据库里把这些数据取一遍,这个是比较没必要的。

下面来给这个Block加上缓存,Magento本身已经提供了一套给Block添加缓存的写法,只需要简单的加几句代码就可以

[php] 
  1. protected function _construct()  
  2.     {  
  3.         $this->addData(array(  
  4.             'cache_lifetime'=> 86400,  
  5.             'cache_tags'    => array(AW_Blog_Model_Post::CACHE_TAG)  
  6.         ));  
  7. }  

其中cache_lifetime指缓存周期,这里我设置的是86400秒,也就是一天,cache_tags指给该缓存设定的标签,这里我设置的是post这个model的一个常量。做完这一步,这个block文件的缓存就好了,页面载入时,这块内容不会再每次去数据库取数据,而是直接载入缓存好的html,减少了页面载入所消耗的时间。

到这一步,整个工作才完成了一半,为什么这么说呢?这里可以做个实验,在加完以上的代码并刷新过一次页面后,数据已经写进缓存文件里了,这时候去后台新增或修改一篇新闻,你会发现前台页面的内容并没有跟着改变,而是维持之前的内容。那么什么时候才会变成新的内容呢,一天之后,因为之前给缓存设置的有效时间是一天,一天之内的有效期内,页面都会去读取缓存文件而不是数据库。这时候你可以这样处理,在后台修改过内容后,手动刷新后台的缓存,让效果实时可见,或者用更好的方案,通过程序控制,在每次新闻内容新增或修改时自动刷新对应的缓存。

打开AW_Blog_Model_Post这个文件,在头部定义一个常量

[php] 
  1. const CACHE_TAG       = 'aw_blog';  

底部添加如下代码

[php] 
  1.  public function cleanCache()  
  2.    {  
  3.        Mage::app()->cleanCache(self::CACHE_TAG);  
  4.        return $this;  
  5.    }  
  6.      
  7.     public function _beforeSave(){  
  8.      $this->cleanCache();  
  9.   
  10.     return parent::_beforeSave();  
  11. }  

常量即是之前给Blog添加的缓存的cache_tags,_beforeSave函数是所有Model类继承自父类的方法,可以在该Model对应的对象实体保存数据时触发,这里重写_beforeSave,去调用一个cleanCache函数,cleanCache函数里只有一句重要的代码,就是Mage::app()->cleanCache(self::CACHE_TAG),这个方法可以清除指定标签(tag)的缓存,比如这里,它只会清除tag为aw_blog的缓存,而不是全部系统缓存。

从完整的流程来说,首先前台页面第一次载入时,该Block会将内容缓存进缓存文件,然后当后台保存新闻时,通过cleanCache会清除指定Tag的缓存,这之后再次载入页面时就会生成新的缓存文件。这样就做到了缓存新闻内容以提高速度的同时,依然可以在后台做出数据改变时在页面实时显示新的数据。

新闻数据在页面上一般所占空间不大,即使缓存起来可能也不会对加载速度有很明显的提升,这里只是以此为例子展示下Magento所提供的Block缓存机制。这个例子很简单,如果要对其他东西做缓存可能会有各种更复杂的流程,这里不再探讨。

PS:本文的前提是你在后台已经把Magento的缓存打开了得意

参考文章:

你可能感兴趣的文章
Slurm——作业调度处理
查看>>
Lustre 维护
查看>>
Lustre 操作
查看>>
Lustre—配置和管理磁盘配额
查看>>
Lustre—磁盘配额测试
查看>>
SSH加密密码中的非对称式密码学
查看>>
Mac Redis安装入门教程
查看>>
python3安装教程配置配置阿里云
查看>>
Mac快捷键和实用技巧
查看>>
Git的多人协作和分支处理测试
查看>>
mysql索引回表
查看>>
iterm2 保存阿里云登陆并防止断开连接
查看>>
brew安装
查看>>
centos 无法连接网络
查看>>
mysql5.7初始密码查看及密码重置
查看>>
go语言实现2048小游戏(完整代码)
查看>>
动态二维码免费制作
查看>>
C语言贪吃蛇
查看>>
Python练手项目
查看>>
知网毕业论文爬取
查看>>