Emlog调用数据库加速显示标签tag缓存优化方法教程
站长亲测Emlog文章标签缓存改为调用数据库代码挺好,站长在文章添页添加文章标签的时候发现修复标签缓存问题后,如果emlog的标签数量较大时,程序缓存的标签文件非常大,如果标签有很多甚至有可能达到几十兆,这明显是自己在给服务器施加压力,如果在模板中添加了调用文章标签代码,每次进入文章页或者进入添加了文章标签代码的页面会非常卡,原因就是服务器需要去那个有可能几十兆的标签缓存文件中获取此文章的标签,每次访问服务器都要访问如此之大的文件,普通服务器怎么可能吃得消呢?相信各位站长在数据量大的时候也会发现emlog程序在偷偷变卡吧?但是不知道是什么原因,酷酷在这里告诉大家就是这个原因,下面酷酷告诉大家是怎么解决的。
站长的解决办法就是将emlog程序自带的从缓存获取文章标签的代码废除,在模板中增加代码来解决,原理就是让大家每访问一个文章时就去数据库中查询一次标签,这样可以大大减少服务器的压力,觉得还是本地缓存调用比较快,但是经过测试证明,还是调用数据库比较快,这点针对国外服务器有着很好的效果,大家不妨试一试。
操作步骤
1、首先找到此文件:根目录/include/lib/cache.php,将以下代码注释掉;
code
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;
code
<?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、以上工作完成后,在你想要添加文章标签的地方添加代码:
code
<?php Tea_blog_tag($logid);/*$logid*/?>
1.本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久会员能下载全站100%源码了,所以单独购买也好,会员也好均不提供相关技术服务。
2.如果源码下载地址失效请 联系站长QQ进行补发。
3.本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!
4.本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【源码无忧】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。
5.请您认真阅读上述内容,购买即以为着您同意上述内容。
下码网 » Emlog调用数据库加速显示标签tag缓存优化方法教程