您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp3.2.1学习笔记-缓存处理
发布时间:2017-09-19 12:11:31编辑:雪饮阅读()
缓存处理:
index方法如:
public function index(){
//默认使用的是文件缓存
//echo C('DATA_CACHE_TYPE');
//先读取缓存,若没有缓存则从数据库中取
if(!$list=S('list')){
$user=D('User');
$list=$user->select();
//将数组缓存,默认的文件缓存在应用目录下Runtime/Temp中
S('list',$list);
}
$this->assign('list',$list);
$this->display();
}
设置缓存时间:
//可以设置缓存时间,如这里设置缓存时间为10秒,缓存时间参数可以忽略S('list',$list,10);
删除缓存:
S('list',null);
快速缓存:
快速缓存在应用目录下Runtime/Data中
快速缓存永不过期则也就不存在过期时间的设置,如:
读取快速缓存:
F('list')
写入快速缓存:
F('list',$list);
删除快速缓存:
F('list',null);
写入快速缓存还可以指定缓存路径如:
F('list',$list,TEMP_PATH);
查询缓存:
如:
$user=D('User');
$list=$user->cache(true)->select();
但该语句执行后在页面TRACE的调试控制台中仍然可以看到如下sql语句:
DESCRIBE think_user
给查询缓存设置缓存名和缓存时间:
$list=$user->cache('xy',10)->select();
给查询缓存设置缓存服务如memcached,xcache等:
//如果没有安装指定的缓存服务则会报错如“系统不支持Xcache”
$list=$user->cache('xy',10,'xcache')->select();
获取查询缓存:
echo "<pre>";
print_r(S('xy'));
echo "</pre>";
删除查询缓存:
S('xy',null);
设置sql解析缓存:
设置了sql解析缓存则会将执行的sql语句缓存在应用目录下Runtime/Temp中
在配置文件中添加配置项如:
'DB_SQL_BUILD_CACHE'=>true,
静态缓存:
静态缓存是缓存为纯净态的文件,都不需要php再次解析的,直接载入就可以用的。
静态缓存需要在配置文件中开启的。
配置文件中添加配置项如:
//开启静态缓存
'HTML_CACHE_ON'=>true,
//全局缓存的过期时间
'HTML_CACHE_TIME'=>60,
//缓存的后缀
'HTML_CACHE_SUFFIX'=>'.html',
//缓存的规则
'HTML_CACHE_RULES'=>array(
//这里指定了User控制器的index方法需要缓存,缓存的文件名为123
//缓存文件将会存储在应用目录下的Html中
'User:index'=>'123',
),
缓存规则中的时间也可以设置:
//更为详尽的缓存文件名:模块-控制器-方法-参数(这里是id,为地址栏的get参数)
//同时设置了缓存时间
'User:index'=>array('{:module}_{:controller}_{:action}_{id}',60),
缓存规则中的缓存路径还可以以目录的形式存储:
'User:index'=>array('{:module}/{:controller}/{:action}/{id}',60),
缓存规则也可以只按方法名缓存(可能会出现冲突的问题):
'index'=>array('{id}'),
缓存规则也可以缓存整个当前地址:
//将当前地址加密作为缓存的文件名
'*'=>array('{$_SERVER.REQUEST_URI|md5}'),
缓存规则还可以只缓存控制器:
'User:'=>array('User/{:action}_{id}',60),
关键字词:thinkphp3.2.1,缓存