Emlog调用数据库加速显示标签tag缓存优化方法

站长亲测Emlog文章标签缓存改为调用数据库代码挺好,站长在文章添页添加文章标签的时候发现修复标签缓存问题后,如果emlog的标签数量较大时,程序缓存的标签文件非常大,如果标签有很多甚至有可能达到几十兆,这明显是自己在给服务器施加压力。

如果在模板中添加了调用文章标签代码,每次进入文章页或者进入添加了文章标签代码的页面会非常卡,原因就是服务器需要去那个有可能几十兆的标签缓存文件中获取此文章的标签,每次访问服务器都要访问如此之大的文件,普通服务器怎么可能吃得消呢?

相信各位站长在数据量大的时候也会发现emlog程序在偷偷变卡吧?但是不知道是什么原因,小高在这里告诉大家就是这个原因,下面教大家是怎么解决的。

站长的解决办法就是将emlog程序自带的从缓存获取文章标签的代码废除,在模板中增加代码来解决,原理就是让大家每访问一个文章时就去数据库中查询一次标签,这样可以大大减少服务器的压力,觉得还是本地缓存调用比较快,但是经过测试证明,还是调用数据库比较快,这点针对国外服务器有着很好的效果,大家不妨试一试。

操作步骤

1、首先找到此文件:根目录/include/lib/cache.php,将以下代码注释掉;

private function mc_logtags() {
 $query = $this->db->query(\"SELECT gid FROM \" . DB_PREFIX . \"blog where type=\'blog\'\");
 $log_cache_tags = array();
 while ($row = $this->db->fetch_array($query)) {
 $logid = $row[\'gid\'];
 $tags = array();
 $tquery = \"SELECT tagname,tid FROM \" . DB_PREFIX . \"tag WHERE gid LIKE \'%,$logid,%\' or gid LIKE \'%,$logid%\' or gid LIKE \'%$logid,%\' or gid LIKE \'$logid\'\";
 $result = $this->db->query($tquery);
 while ($trow = $this->db->fetch_array($result)) {
 $trow[\'tagurl\'] = urlencode($trow[\'tagname\']);
 $trow[\'tagname\'] = htmlspecialchars($trow[\'tagname\']);
 $trow[\'tid\'] = intval($trow[\'tid\']);
 $tags[] = $trow;
 }
 $log_cache_tags[$logid] = $tags;
 unset($tags);
 }
 $cacheData = serialize($log_cache_tags);
 $this->cacheWrite($cacheData, \'logtags\');
 }

2、根目录:模板目录中的文件 /content/templates/模板文件夹名/module.php;

<?php
//blog:文章标签
function Tea_blog_tag($blogid){
 //调用数据库版标签
 $db = MySql::getInstance();
 $query = $db->query(\"SELECT gid FROM \".DB_PREFIX.\"blog where type=\'blog\' and gid=\'\".$blogid.\"\'\");
 while($row = $db->fetch_array($query)){
 $logid = $row[\'gid\'];
 $tags = array();
 $tquery = \"SELECT tagname,tid FROM \" . DB_PREFIX . \"tag WHERE gid LIKE \'%,\".$logid.\",%\' or gid LIKE \'%,\".$logid.\"\' or gid LIKE \'\".$logid.\",%\' or gid LIKE \'\".$logid.\"\'\" ;
 $result = $db->query($tquery);
 while ($trow = $db->fetch_array($result)) {
 $trow[\'tagurl\'] = urlencode($trow[\'tagname\']);
 $trow[\'tagname\'] = htmlspecialchars($trow[\'tagname\']);
 $trow[\'tid\'] = intval($trow[\'tid\']);
 $tags[] = $trow;
 }
 }
 if(!empty($tags)){
 foreach ($tags as $value){
 echo \'<a href=\"\'.Url::tag($value[\'tagurl\']).\'\" title=\"\'.$value[\'tagname\'].\'\">\'.$value[\'tagname\'].\'</a>\';
 }
 }else{
 echo \'<a>无标签</a>\';
 }
}
?>

3、以上工作完成后,在你想要添加文章标签的地方添加代码:

<?php Tea_blog_tag($logid);/*$logid*/?>
上一篇 网站打开速度缓慢的原因都有哪些?
下一篇 宝塔面板网站缓存优化必装插件和扩展推荐

探索站点内容

搜索文章、标签、分类

MediaClaw 社媒虾
MediaClaw 社媒虾
关注公众号
领美团外卖神券
领美团外卖神券
最新评论
15579854855
15579854855
9月15日
安装流程都没有,下载也用不了,浪费时间
小高网
小高网
9月15日
这个还是少用好
06285142
06285142
9月14日
怎么现在都没出绿色版的绿泡泡了。等了一年了呢
小高网
小高网
9月9日
那就找个完整版的安装覆盖上去吧
白添霸霸
白添霸霸
9月9日
精简版安装后在控制面板不显示
小高网
小高网
9月8日
控制面板卸载不了吗
白添霸霸
白添霸霸
9月8日
大佬,安装以后有些软件打不开了,例如CCleaner 7,提示WebView2 Runtime 初始化失败(错误:0x80070002),重装完整版提示安装时出
1
1
8月31日
就是不能处理已安装软件
小高网

小高网管理员

小高网www.xx8g.com

本月创作热力图