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

2022-10-31 0 786

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

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

 

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

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

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

操作步骤

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

  1. private function mc_logtags() {
  2. $query = $this->db->query(“SELECT gid FROM “ . DB_PREFIX . “blog where type=’blog'”);
  3. $log_cache_tags = array();
  4. while ($row = $this->db->fetch_array($query)) {
  5. $logid = $row[‘gid’];
  6. $tags = array();
  7. $tquery = “SELECT tagname,tid FROM “ . DB_PREFIX . “tag WHERE gid LIKE ‘%,$logid,%’ or gid LIKE ‘%,$logid%’ or gid LIKE ‘%$logid,%’ or gid LIKE ‘$logid'”;
  8. $result = $this->db->query($tquery);
  9. while ($trow = $this->db->fetch_array($result)) {
  10. $trow[‘tagurl’] = urlencode($trow[‘tagname’]);
  11. $trow[‘tagname’] = htmlspecialchars($trow[‘tagname’]);
  12. $trow[‘tid’] = intval($trow[‘tid’]);
  13. $tags[] = $trow;
  14. }
  15. $log_cache_tags[$logid] = $tags;
  16. unset($tags);
  17. }
  18. $cacheData = serialize($log_cache_tags);
  19. $this->cacheWrite($cacheData, ‘logtags’);
  20. }

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

  1. <?php
  2. //blog:文章标签
  3. function Tea_blog_tag($blogid){
  4. //调用数据库版标签
  5. $db = MySql::getInstance();
  6. $query = $db->query(“SELECT gid FROM “.DB_PREFIX.“blog where type=’blog’ and gid='”.$blogid.“‘”);
  7. while($row = $db->fetch_array($query)){
  8. $logid = $row[‘gid’];
  9. $tags = array();
  10. $tquery = “SELECT tagname,tid FROM “ . DB_PREFIX . “tag WHERE gid LIKE ‘%,”.$logid.“,%’ or gid LIKE ‘%,”.$logid.“‘ or gid LIKE ‘”.$logid.“,%’ or gid LIKE ‘”.$logid.“‘” ;
  11. $result = $db->query($tquery);
  12. while ($trow = $db->fetch_array($result)) {
  13. $trow[‘tagurl’] = urlencode($trow[‘tagname’]);
  14. $trow[‘tagname’] = htmlspecialchars($trow[‘tagname’]);
  15. $trow[‘tid’] = intval($trow[‘tid’]);
  16. $tags[] = $trow;
  17. }
  18. }
  19. if(!empty($tags)){
  20. foreach ($tags as $value){
  21. echo ‘<a href=”‘.Url::tag($value[‘tagurl’]).‘” title=”‘.$value[‘tagname’].‘”>’.$value[‘tagname’].‘</a>’;
  22. }
  23. }else{
  24. echo ‘<a>无标签</a>’;
  25. }
  26. }
  27. ?>

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

  1. <?php Tea_blog_tag($logid);/*$logid*/?>

 

 

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信扫一扫,即可进行扫码关注哦,分享从这里开始,精彩与您同在。
点赞 (0)

  • 1. 本站所有资源来源于用户上传和网络转载,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!405006727@qq.com
  • 2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
  • 3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
  • 4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
  • 52资源网 文章博客 Emlog调用数据库加速显示标签tag缓存优化方法 https://www.mzwluo.cn/195.html

    常见问题
    • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
    查看详情
    • 最常见的情况是下载不完整,可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。
    查看详情

    相关文章

    发表评论
    暂无评论
    官方客服团队

    为您解决烦忧 - 24小时在线 专业服务