项目中CI缓存适配器的使用
项目中有若干控制器,这些控制器有一些公共数据,因此,在基控制器类中获取这些数据,为了提高系统性能,使用了缓存系统,采用了CI框架提供的缓存适配器来提供缓存数据的设置与获取。
1.在基类的构造方法中加载CI的缓存适配器
//加载cache适配器
$this->load->driver('cache', array('adapter' => 'file'));
第一个参数是加载适配器类型,此处是缓存适配器;第二个参数是数组形式,adapter=>file表示指定文件作为缓存的实现。(也可以指定其它缓存实现,比如apc)
2.在基类的构造方法中加载所有缓存数据,系统中封装了getCommCache()方法,在该方法中,从缓存中获取所有子控制器需要使用的公共数据,代码如下:
public function getCommCache()
{
//获取导航数据
if($this->getCache('nav')) //如果缓存数据存在
{
//从缓存中获取数据
$this->nav = $this->getCache('nav');
}else //缓存数据不存在
{
//从数据库获取数据
$this->load->model('Mhead');
$this->nav=$this->Mhead->get_head();
//将该数据设置到缓存
$this->setCache('nav',$this->nav,10);//三个小时
}
。。。。。(其它数据设置与获取类似)
}
以上代码中getCache、setCache方法是对CI缓存适配器方法的封装,如下:
public function setCache($id,$data,$time=null)
{
$this->cache->save($id, $data, $time);
}
public function getCache($id)
{
return $this->cache->get($id);
}
其中,有关的几个缓存适配器的方法为:
(1)设置数据到缓存系统中:
$this->cache->save('cache_item_id[string]', 'data_to_cache[mix]',[time[int]]);
第一个参数为缓存数据名,第二个参数为需要缓存的数据,第三个参数可选,是缓存有效时间默认60秒。例如,需要将某段字符串作为缓存数据:
$data = "this is the common text";
$this->cache->save('commText',$data,60);
(2)从缓存中获取数据:
$foo = $this->cache->get('my_cached_item');
参数为设置缓存时的ID,返回值就是获取到的缓存数据:
$Text = $this->cache->get('commText');
除此之外,还包括删除某个缓存数据:$this->cache->delete('cache_item_id');清空所有缓存:$this->cache->clean()等等。
暂时这么多,以后再补充。。。