网上找的代码通常看开发者心情,是添加缓存机制还是不加,使用者是没办法的。
我们最常用的缓存机制,其实是文章和搜索以及标签这三个功能块,因为这些模块产生的数据是很大的,卡也是因为这些模块。
所以,晚上睡不着,把这三个模块加上缓存。现在这个功能已经完成了,测试正常,我是用的是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,还可以是其他的内存性缓存,都是可以的。
正文结束