MYSQL查询数据本地缓存
帅气的开发者2020-03-26 12:42:50118阅读 如何提升网站的访问速度?
这个问题不简单,速度的优化像是一个无底洞,从服务器端到前端,可以说每一个环节都有优化的空间。
提升访问速度,不得不说缓存,从客户端(浏览器)缓存、WEB服务器的缓存,PHP的缓存,MYSQL的缓存。
每一种缓存都各有有优缺点,这个需要看项目需要。用PHP做MYSQL的数据缓存,在PHP这个环节上做缓存我觉得是个不错的选择,数据调用起来更灵活,特别在一些用户交互比较多的项目。
MYSQL查询数据本地缓存
上代码
//缓存 n:函数 a:参数 d:数据
private static function cache($n,$a,&$d = false){
$expire = 300; //缓存周期
$file = __DIR__ .'./cache/'.$n.'/'.hash('sha256',json_encode($a)).'.tmp';
if ($d != false){ //判断数据参数是否有传参
//写入缓存 空值参数为删除缓存
if (!empty($d)){
$data = array();
if(is_array($d)){ //这个地方必须遍历mysql结果集为数组做存储
$data = $d; //已经是数组的直接赋值
}else{
foreach ($d as $v){
$data[] = $v;
}
}
return file_put_contents($file,json_encode($data)); //存储
}
if (is_file($file)){ //空值删除掉缓存
unlink($cache_file);
return true;
}
return false;
}
//读取缓存 判断文件是否存在 和 文件创建时间是否过期
if (is_file($file)){
if ((filemtime($file)) > (time()-$expire)){
return json_decode( file_get_contents($file) ,true);
}else{
unlink($cache_file);
}
}
return false;
}
提供一个思路,具体根据你的项目来