体系默许的缓存办法是选用File办法缓存,咱们可以在项目配置文件里边界说其他的缓存办法,例如,修正默许的缓存办法为Xcache(当然,你的环境需要支撑Xcache)
关于File办法缓存下的缓存目录下面由于缓存数据过多而致使存在许多的文件疑问,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的办法。
'DATA_CACHE_SUBDIR'=>true
还可以设置哈希目录的层次,例如
'DATA_PATH_LEVEL'=>2
就可以依据缓存标识的哈希主动创建多层子目录来缓存。
S办法支撑缓存有效期,在许多情况下,也许咱们并不需要有效期的概念,或许运用文件办法的缓存就可以满足要求,所以体系还供给了一个专门用于文件办法的迅速缓存办法F办法。F办法只能用于缓存简略数据类型,不支撑有效期和缓存目标,运用如下:
//迅速缓存Data数据,默许保存在DATA_PATH目录下面
F('data',$data);
//迅速缓存Data数据,保存到指定的目录
F('data',$data,TEMP_PATH);
F('user/data',$data);
//删去缓存数据
F('data',null);
//获取缓存数据
$data=F('data');
配置文件config.php
//动态缓存,缓存文件存在于\Runtime\Temp
'DATA_CACHE_TYPE'=>'file',
'DATA_CACHE_TIME'=>'3600',
//'DATA_CACHE_SUBDIR'=>true,//开启子目录
//'DATA_CACHE_LEVEL'=>3,//设置子目录的层次
Action文件:
function view(){
//缓存
//$cache=Cache::getInstance('缓存办法','缓存参数');
//$cache=Cache::getInstance('Xcache',array('expire'=>60));
//$cache->set('姓名','值');或许$cache->name='值';
//$value=$cache->get('姓名');或许$value=$cache->name;
//$cache->rm('姓名');或许unset($cache->name);
//S('姓名','数据','3600','类型')缓存方便办法
$user=M('haodetong');
$value=S('list');
if(empty($value)){
$list=$user->select();
S('list',$list,3600);
echo '这个是直接从数据库中读取的文件';
dump($list);
}else{
echo '这个是缓存文件';
dump($value);
}
}
下面给大家独自介绍ThinkPHP 中F 办法的迅速缓存
运用文件办法的缓存就可以满足要求,所以体系还供给了一个专门用于文件办法的迅速缓存办法F办法
$path="../Public/Runtime/";
$str="asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa";
F("str/andy",$str,$path);
这样就把 $str 字符串这个内容放在了 ../Public/Runtime/str/andy.php 的文件中了
andy.php 的文件内容如下:
return 'asdfasdfasdaaaaaaaaaaaaaaaaaaaaaa';
?>
下面一段代码是ThinkPHP缓存办法S()概述
thinkPHP的F办法只能用于缓存简略数据类型,不支撑有效期和缓存目标。S()缓存办法支撑有效期,又称动态缓存办法,运用示例如下:
代码如下:
// 运用data标识缓存$Data数据
S('data',$Data); //前面的是缓存标明,后边的是缓存的数据
代码如下:
// 缓存$Data数据3600秒
S('data',$Data,3600);
代码如下:
// 删去缓存数据
S('data',NULL); //第一个参数时缓存的标识名
代码如下:
$cache=S($cachename);//设置缓存标明
// 判别是不是有这个查询缓存
if(!$cache){ //$cache 中是缓存的标明(每个查询都对应一个缓存 即 不一样的查询有不一样的缓存)
$cache=$video->where($map)->order($order)->limit($limit)->select();
foreach($cache as $key=>$value){
$userlist=$user->where("id=".$value['user_id'])->find();
$cache[$key]["nickname"]=$userlist['nickname'];
}
S($cachename,$cache,3600); //设置缓存的生计时刻
}
S($cachename,NULL); //删去缓存