您的位置:图文专栏 > 技术教程 > 织梦二开 >

dedecms织梦数据量达到万级后 生成速度很慢解决办法

发布时间:2021-03-19 15:46:56

dedecms织梦数据量达到万级后 生成速度很慢解决办法

织梦由于生成静态文件原因及系统架构本身的原因,当数量达到万级别后,生成栏目及文档相当缓慢,今天介绍下,通过改动系统文件来提升生成速度,修改之前请大家做好织梦程序的备份。
dedecms织梦数据量达到万级后 生成速度很慢解决办法

1、先设置 关闭副栏目(在系统----系统基本参数—性能选项里)

2、一般网站不需要 栏目交叉 交叉 所以

打开: include/arc.listview.class.php

找到以下代码并注释(注释代码为:/*代码*/):

找到94行注释掉

//获得交叉栏目ID
            if($this->TypeLink->TypeInfos['cross']>0 && $this->TypeLink->TypeInfos['ispart']==0)
            {
                $selquery = '';
                if($this->TypeLink->TypeInfos['cross']==1)
                {
                    $selquery = "SELECT id,topid FROM `dede58_arctype` WHERE typename LIKE '{$this->Fields['typename']}' AND id<>'{$this->TypeID}' AND topid<>'{$this->TypeID}'  ";
                }
                else
                {
                    $this->Fields['crossid'] = preg_replace('/[^0-9,]/', '', trim($this->Fields['crossid']));
                    if($this->Fields['crossid']!='')
                    {
                        $selquery = "SELECT id,topid FROM `dede58_arctype` WHERE id in({$this->Fields['crossid']}) AND id<>{$this->TypeID} AND topid<>{$this->TypeID}  ";
                    }
                }
                if($selquery!='')
                {
                    $this->dsql->SetQuery($selquery);
                    $this->dsql->Execute();
                    while($arr = $this->dsql->GetArray())
                    {
                        $this->CrossID .= ($this->CrossID=='' ? $arr['id'] : ','.$arr['id']);
                    }
                }
            }

找到751注释掉:

//获得附加表的相关信息
 $addtable  = $this->ChannelUnit->ChannelInfos['addtable'];
        if($addtable!="")
        {
            $addJoin = " LEFT JOIN `$addtable` ON arc.id = ".$addtable.'.aid ';
            $addField = '';
            $fields = explode(',',$this->ChannelUnit->ChannelInfos['listfields']);
            foreach($fields as $k=>$v)
            {
                $nfields[$v] = $k;
            }
            if(is_array($this->ChannelUnit->ChannelFields) && !empty($this->ChannelUnit->ChannelFields))
            {
                foreach($this->ChannelUnit->ChannelFields as $k=>$arr)
                {
                    if(isset($nfields[$k]))
                    {
                        if(!empty($arr['rename'])) {
                            $addField .= ','.$addtable.'.'.$k.' as '.$arr['rename'];
                        }
                        else {
                            $addField .= ','.$addtable.'.'.$k;
                        }
                    }
                }
            }
        }
        else
        {
            $addField = '';
            $addJoin = '';
        }

找到815行注释掉:

$query = "SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,
                       tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
                       $addField
                       FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp ON arc.typeid=tp.id
                       $addJoin
                       WHERE arc.id in($idstr) $ordersql ";

相关推荐:织梦dedeCMS大数据量时click的优化方法 上一篇: 织梦channelartlist输出下级栏目对应html标签的方法

下一篇: 织梦dedeCMS大数据量时的优化方法