tp5.1缓存Cache的使用

前言:一般分类基本不会动,所以我们在分类当中加入缓存

1.控制器use

use think\facade\Cache;

2.存取缓存

    public function index()
    {
        if (Cache::get('category')) {         //判断是否存在
            $categories = Cache::get('category');  //存在就读缓存
        } else {
            $categories = Categories::all_categories();
            Cache::set('category', $categories);  //不存在就设置缓存
        }
        $this->assign(compact('categories'));
        return $this->fetch();
    }

3. 删除缓存,当我们新增或者编辑的时候,数据发生了改变,那么我们先删除缓存然后再去设置新的缓存

Cache::rm('category');
例如:这里的allowfield是希望指定某些字段写入

public function update(Request $request)
    {
        $categories = new Categories();
        $categories->allowField(['name', 'photo_id'])->save($_POST, ['id' => $request->id]);    
        Cache::rm('category');
    }

4.生成缓存的时候,会生成缓存文件,那么我们就需要删除项目缓存文件,当然也可以让其自动更新:

https://www.kancloud.cn/manual/thinkphp5_1/354019

 /***
     * 执行清除
     */
    public function cache()
    {
        $path = ROOT_PATH . '/runtime/temp';
        delDirAndFile($path);   //这里是一个助手函数
        $this->success('清除模板缓存成功', 'Index/index');
    }

助手函数common.php中

/**
 * 删除目录及目录下所有文件或删除指定文件
 * @param str $path 待删除目录路径
 * @param int $delDir 是否删除目录,1或true删除目录,0或false则只删除文件保留目录(包含子目录)
 * @return bool 返回删除状态
 */
function delDirAndFile($path, $delDir = FALSE)
{
    $handle = opendir($path);
    if ($handle) {
        while (false !== ($item = readdir($handle))) {
            if ($item != "." && $item != "..")
                is_dir("$path/$item") ? delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
        }
        closedir($handle);
        if ($delDir)
            return rmdir($path);
    } else {
        if (file_exists($path)) {
            return unlink($path);
        } else {
            return FALSE;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,165评论 1 32
  • 理工寝室商店-微信小程序 疑问小结 当时在XAMMP下mysql目录下的bin下 php -v 不起作用.到ph...
    这个超人不会飞阿阅读 1,747评论 1 1
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,488评论 0 9
  • 姓名: 李小娜 [嵌牛导读] :当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正...
    n184阅读 3,921评论 0 1
  • 蔚蓝的天空,洁白的云朵,偷偷摘下姥姥花园的一朵花 清晨,伴着that girl的旋律,开始晨跑,做一个热爱生活...
    仲夏柠叶香er阅读 1,333评论 22 15