基于控制器的缓存

控制器内使用缓存

可以通过基础控制器类 grace 的内置函数 cache()、clearCache()、removeCache() 来创建、删除缓存。

cache() 函数

功能 : 创建缓存( 自动判断缓存有效性 );
 参数 :
 $name : 缓存名称
 $queryMethod : 缓存数据不存在时执行的数据查询函数,建议以 __( 2个下划线 )开头;
 $id = null : 影响 id,字符串或数组形式 ( 作用 : 同一个缓存名称因为参数不同而产生不同的缓存数据 );
 $timer = 3600 : 缓存游戏时间,单位 : 秒;
 $isSuper = true : 是否为一个全局缓存;// 非全局缓存会在名称前自动添加控制器及方法名;

clearCache() 函数

功能 : 清空全部缓存;

removeCache() 函数

功能 : 清空全部缓存;
参数 : 
$name : 缓存名称
$id = null : 影响 id,字符串或数组形式 ( 作用 : 同一个缓存名称因为参数不同而产生不同的缓存数据 );
$isSuper = true : 是否为一个全局缓存;

演示代码

<?php
class indexController extends grace{
    public function index(){
        $this->cache(
            'studentsList',
             '__getStudentsList', // 函数名称
            PG_PAGE, // 每一页数据一个缓存,即id
           
        );
        // 最终缓存数据保存在 $this->缓存名称 变量内
        p($this->studentsList);
    }

    protected function __getStudentsList(){
        echo '没有缓存数据,执行数据查询';
        $db = db('students');
        return $db->page(2)->order('st_id desc')->fetchAll();
    }

    // 通过控制器清空缓存、
    public function clearAllCache()
    {
        $this->clearCache();
    }

    // 通过控制器删除某个具体缓存
    public function delCache()
    {
        // 删除 studentsList 的第一页缓存数据
        $this->removeCache('studentsList', 1);
    }
}