[Emlog优化]缓存文件优化 加快文章发布速度 加快缓存速度

今天爱下载资源网站长继续分享Emlog网站优化,如何加快网站的缓存速度,加快文章发布速度,前一篇文章讲了很粗暴的方法,简单有效,但是这样是不符合业务逻辑的,有的数据是需要缓存数据,若缓存数据更新不及时,那么就会出现一些数据延迟的情况!

因此,应该针对性的更新缓存!

  1. 加快缓存速度:
    Emlog是基于PHP+MYSQL的运行环境,那么缓存来源于MYSQL数据库,加快缓存速度,就是要加快MYSQL的查询速度

针对MYSQL的查询优化,有建索引等等,还有重要一点“SELECT * ”类似这样的SQL查询语句要少用

当表内某字段存在“NULL”值时,查询就会很慢,当数据量大了之后会更慢!

所以有两个优化方向,尽量减少数据库中的NULL值(空字符串)

其二就是优化SQL查询语句,建立索引

那么针对EMLOG缓存,我们就可以针对性优化

优选资源网的优化就需要在用户表数据这里处理,因为用户过多导致用户缓存数据特别慢

为此来到“include\lib\cache.php”第92行的用户数据缓存这里,代码如下:

	/**





	 * 用户信息缓存





	 */





	private function mc_user() {





	$user_cache = array();





	$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user");





	while ($row = $this->db->fetch_array($query)) {





	 $photo = array();





	 $avatar = '';





	 if(!empty($row['photo'])){





	 $photosrc = str_replace("../", '', $row['photo']);





	 $imgsize = chImageSize($row['photo'], Option::ICON_MAX_W, Option::ICON_MAX_H);





	 $photo['src'] = htmlspecialchars($photosrc);





	 $photo['width'] = $imgsize['w'];





	 $photo['height'] = $imgsize['h'];





	 





	 $avatar = strstr($photosrc, 'thum') ? str_replace('thum', 'thum52', $photosrc) : preg_replace("/^(.*)\/(.*)$/", "\$1/thum52-\$2", $photosrc);





	 $avatar = file_exists('../' . $avatar) ? $avatar : $photosrc;





	 }





	 $row['nickname'] = empty($row['nickname']) ? $row['username'] : $row['nickname'];





	 $user_cache[$row['uid']] = array(





	 'photo' => $photo,





	 'avatar' => $avatar,





	 'name_orig' => $row['nickname'],





	 'name' => htmlspecialchars($row['nickname']),





	 'mail' => htmlspecialchars($row['email']),





	 'des' => htmlClean($row['description']),





	 'ischeck' => htmlspecialchars($row['ischeck']),





	 'role' => $row['role'],





	 );





	}





	$cacheData = serialize($user_cache);





	$this->cacheWrite($cacheData, 'user');





	}

我们将这条代码改为:

	// 原代码





	$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "user");





	 





	// 改为下面这样





	$query = $this->db->query("SELECT uid,username,nickname,role,ischeck,photo,email,description FROM " . DB_PREFIX . "user");

大家需要针对自己的数据库表字段,去查询必须的数据字段名

另外,我们发现其下还有这样的代码:

	if(!empty($row['photo'])){





	 $photosrc = str_replace("../", '', $row['photo']);





	 $imgsize = chImageSize($row['photo'], Option::ICON_MAX_W, Option::ICON_MAX_H);





	 $photo['src'] = htmlspecialchars($photosrc);





	 $photo['width'] = $imgsize['w'];





	 $photo['height'] = $imgsize['h'];





	 





	 $avatar = strstr($photosrc, 'thum') ? str_replace('thum', 'thum52', $photosrc) : preg_replace("/^(.*)\/(.*)$/", "\$1/thum52-\$2", $photosrc);





	 $avatar = file_exists('../' . $avatar) ? $avatar : $photosrc;





	}

会有一个chImageSize(),这个函数用于更改图片的形状(长和宽),其实是没必要去获取图片的缩略图,用户的头像照片大小其实不需要在意,带宽高一点就好了

为此将用户缓存的代码改为这样就好了:

	/**





	 * 用户信息缓存





	 */





	private function mc_user() {





	 $user_cache = array();





	 $query = $this->db->query("SELECT uid,username,nickname,role,ischeck,photo,email,description FROM " . DB_PREFIX . "user");





	 while ($row = $this->db->fetch_array($query)) {





	 // $photo = array();





	 /*





	 $avatar = '';





	 if(!empty($row['photo'])){





	 $photosrc = str_replace("../", '', $row['photo']);





	 $imgsize = chImageSize($row['photo'], Option::ICON_MAX_W, Option::ICON_MAX_H);





	 $photo['src'] = htmlspecialchars($photosrc);





	 $photo['width'] = $imgsize['w'];





	 $photo['height'] = $imgsize['h'];





	 





	 $avatar = strstr($photosrc, 'thum') ? str_replace('thum', 'thum52', $photosrc) : preg_replace("/^(.*)\/(.*)$/", "\$1/thum52-\$2", $photosrc);





	 $avatar = file_exists('../' . $avatar) ? $avatar : $photosrc;





	 }*/





	 $row['nickname'] = empty($row['nickname']) ? $row['username'] : $row['nickname'];





	 $user_cache[$row['uid']] = array(





	 'photo' => $row['photo'],





	 'avatar' => $row['photo'],





	 'name_orig' => $row['nickname'],





	 'name' => htmlspecialchars($row['nickname']),





	 'mail' => htmlspecialchars($row['email']),





	 'des' => htmlClean($row['description']),





	 'ischeck' => htmlspecialchars($row['ischeck']),





	 'role' => $row['role'],





	 );





	 }





	 $cacheData = serialize($user_cache);





	 $this->cacheWrite($cacheData, 'user');





	}

这样就优化好了用户数据的缓存!

  1. 针对性优化缓存:
    之前文章我们是去掉了缓存,其实这样会造成很多BUG,更新发布文章的时候,有必要针对性的更新缓存

为此在“admin\save_log.php”文件第66行的代码改为:

	// 源代码





	$CACHE->updateCache();





	 





	// 修改为:





	$CACHE->updateCache(array('sta', 'tags', 'newlog', 'logsort', 'logtags'));

OK,这样就可以很好解决了~

在Emlog的核心文件中很多地方重复调用更新缓存,或者更新没必要的缓存数据的地方,都是不必要的,大家需要自行修改哦!
爱下载资源网
转载:http://www.aixiazaivip.com/jaiochenga/1288.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值