网上找的代码通常看开发者心情,是添加缓存机制还是不加,使用者是没办法的。
我们最常用的缓存机制,其实是文章和搜索以及标签这三个功能块,因为这些模块产生的数据是很大的,卡也是因为这些模块。
所以,晚上睡不着,把这三个模块加上缓存。现在这个功能已经完成了,测试正常,我是用的是redis,同时设置持久化,永不过期。
速度测试:https://dh.qqooo.cn
完整的方法:
// 下面这是加的缓存 $about_shuju = 'html_'.$id; //如果有数据直接调用 if (Cache::has($about_shuju)) { $t = Cache::get($about_shuju); } else { //没有数据就从数据库查询,之后设置存储到缓存中 $t = $article->alias('a')->join('articlecate c', 'c.id=a.tid')->join('user m', 'm.id=a.uid')->field('a.*,c.id as cid,c.name,c.template,c.alias,m.id as userid,m.grades,m.point,m.userhead,m.username,m.sex,m.status')->where('a.id', $id)->find(); $t['keyword_arr']=explode(',',$t['keywords']); // 此代码去除url中的http(s)头和/尾部 preg_match_all('/[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/', $t['outlink'], $matches); $t['domain']=$matches[0][0]; Cache::set($about_shuju, $t); } $this->assign('t', $t);
效果演示:
PS:这个缓存可以是本地,也可以是redis,还可以是其他的内存性缓存,都是可以的。
缓存机制,提高程序运行速度。