您现在的位置是: 首页 > 技术分享 >
关于文件缓存的应用及设置
一般想要提高页面访问速度,就需要设置缓存。常见的缓存有memcache、redis、文件缓存。像我之前的网站会定时生成一个静态页面,用户访问的时候,不走动态数据,直接访问缓存文件,速度就会大大提升。当然了,如果有数据更新的话,可以在后台清除对应的文件缓存。
一般缓存的运用需要多种方式的缓存结合,这篇文章主要是来写关于文件缓存的应用及其设置。文件缓存生成的数据可以是静态页面,当然也可以生成对应的数组。像网站中出现的分类或者城市,都可以用用文件缓存生成对应的数组,调用的时候直接调用缓存,如果缓存不存在,生成缓存,继续调用。(以下例子均采用php语言的形式来示范,其他语言也大同小异)
如果文件缓存目录设置为/data/cache,就可以这样写
$cacheFile ='/data/cache/index.php';生成的文件后缀名可自定义,当然也可以写成动态的,比如传对应的id,或者传当前时间都可以。此路径就是我们要生成缓存的路径。
1、第一种判断方式,生成的结构是序列化的。
if (is_file($cacheFile) && (time()-filemtime($cacheFile)< 3600*24){ //判断你缓存文件是否存在,是否在过期时间之内。 $list = unserialize(file_get_contents($cacheFile)); //如果存在的话,你就可以在前台调用 //因为数据是从文件读取的,所以叫文件缓存 }else{ //如果缓存不存在,需要对数据进行处理,重新生成缓存 $sql = 'select * from test where status = 1'; $list = $this->query($sql);//执行sql获取数组 //数据的处理因业务不同,写法也不同 file_put_contents($cacheFile,serialize($list)); }2、第二种判断方式,生成的结构是数组的。
$data = @include($cacheFile);//用include获取缓存文件信息 if (!$data || ($data['time']+3600)<time()){ //如果缓存不存在或过期 $sql = 'select * from test where status = 1'; $list = $this->query($sql); //根据业务不同,获取对应的数据 $data['list'] = $list; //写入缓存 $data = array('time'=>time(),'data'=>$data); $data_str = '<?php' . "\n" . 'return ' . var_export( $data, true ) . ';' . "\n" . '?>'; file_put_contents($cacheFile,$data_str); }else{ //直接读取缓存 extract($data['data']); //函数从数组中把变量导入到当前的符号表中。 }设置缓存的基本原理是:缓存不存在或过期,重新生成缓存,读取缓存。
分享:
上一篇: 写给入门或是技术遇到瓶颈期的小伙伴们
下一篇: LINUX定时任务安装及设置