`
hududanyzd
  • 浏览: 779265 次
文章分类
社区版块
存档分类
最新评论

DEDECMS建站实战技巧

 
阅读更多

本文教你如何使用DedeCMS系统搭建一个自己的网站,这里结合一个实例来具体说明网站的整个搭建的流程,并结合一些基本的技术讲解进一步阐述DedeCMS系统用于网建的强大之处。如何用dedecms搭建一个完美的网站,dedecms论坛教师天涯将为你一步步的讲解。


在学习搭建网站之前,我们需要了解网站建设的几个大步骤:1.网站规划;2.页面设计;3.服务器购买;4.制作模板;5.网站调试;6.网站运营。这几个步骤是一个平面的介绍,网站搭建的正规步骤大致如此,但辨别这些网站的好坏还是需要通过每个过程的深度来。

1.网站规划,在使用DedeCMS建站之前需要对自己的建站目的有一个非常好的定位,明确自己的网站建设目的,其实规划是最为重要的,这个决定你网站今后发展的主线,不过现在很多的站长都没有这个规划的过程,拷贝、抄袭成了他们的兴趣,但如果要成为一个正规站长,你必须要有这个规划的能力,如果没有,那你需要请教别人。

不同类型的网站需要不同的规划,例如行业门户和地区门户不同,小说站和游戏站不同…这些规划不单单需要明确你的网站主要的功能,是供大家查阅资料还是供别人讨论交流,在建站之前你需要明确,其次就是你需要思考好你的网站栏目、基本的页面架构,有了这些你才能够做的更好。

当然使用DedeCMS架设网站我们需要在之前熟悉DedeCMS的网站基本的功能结构,例如DedeCMS拥有自定义模型、栏目拥有频道、列表之分,DedeCMS有模块,有很多插件,你不一定掌握每一个功能的使用,但你在之前必须了解DedeCMS能够做到哪些,你在规划之前哪些地方可以把DedeCMS现有的功能尽可能的挖掘出来。

一般用户基本上用DedeCMS程序就用了20%的功能,主要就是文章发布、软件下载,对于自定义模型、模块那些就很少用到,所以这里我个人提倡大家要多熟悉DedeCMS的系统,这样结合功能才能更好的做这个之前的网站规划。

这里我就拿我自己的一个小站点举例子,我个人最近想做一个站点,用来告诉大家不要浮躁,并且我想这个站点还收录我自己的一些博客,并且收录一些励志之类的文章,同更多人共勉,当然我的用户定位是那些工作者、我的同学,那些容易浮躁的人,所以希望这个站点告诫他们不能没有激情,需要有远大目标,并且需要一步步去努力,不要浮躁。栏目基本划分就是“关于浮躁”、“新闻选读”、“励志人生”、“美文精选”、“博客”。

关于浮躁:主要介绍什么是浮躁,浮躁产生的原因,以及如何使得自己不去浮躁等等,这个准备就做一个简单的介绍页面,类似于企业网站的企业简介之类的。
新闻选读:选择最近发生的一些最新的事情,看一看他们是否浮躁,最好加入一个评分的功能,可以让用户评价这个新闻的人物是否浮躁,DedeCMS默认就有一个顶、踩的功能,可以考虑修改下。
励志人生:主要就是摘选一些励志的内容,鼓励更多年轻人需要树立远大的理想。
美文精选:摘选一些很精辟的文章,这些文章阐述一些人生的道理。
博客:记录自己学习、生活的琐碎事情,对自己的心态做一个评定,看看自己是否浮躁。
有了这些规划以后,我知道了自己的站点的大致情况,再想想自己的这个站点需要简约而不简单,颜色用充满生机的绿色,但绿色会显得非常年轻,那么就需要一个德高望重的长者,个人敬仰伟大教育家孔夫子,所以就把他老人家放在首页。
2.页面设计,有了前面的规划之后,接下来就是页面的设计,网页设计是网站第二个步骤,也是非常重要的一个步骤,因为我这里是个人做站,所以沟通上不存在任何的问题,不过如果是企业建站、或者团队建站那就需要有一个美工和策划者沟通的过程,这里美工需要尽量去体会策划者所策划的内容,需要去不断的学习、摸索,策划者需要尽量和美工去把握、沟通,了解美工的页面设计中的几个基本的要点,并且对设计的每个页面进行确认,并提出相关的修改意见,这样这个页面设计才能够满足策划者的要求。
当然策划者需要有非常资深的网站阅历,自己需要深入这个行业、地区,非常了解互联网,粗略的了解并不行,深知互联网不单单就是自己经常上相关行业的几个站点,比如现在许多企业老板建站,他们基本上就去自己行业几个相关的站点,最多就是去一去新浪、淘宝这类的站点,可能对自己的这个站点理解还是比较狭隘的,这时候就需要企业老板要么自己深入学习下互联网的一些建站知识,要么就是聘邀专门的网站资深阅历的人员让他提出站点的建设性意见或给出一个整体的策划方案。
美工同事也需要学习,不单单了解自己的技术知识也需要熟知相关的行业,深入了解企业或者行业面向的用户,知道他们喜欢什么、不喜欢什么,可能美工自己设计的东西自己很满意,但是用户感觉体验太差,最后也是一个鸡肋,这个时候需要美工很好的学习、沟通,这样才能够设计出一个活生生的站点,美工在网站建设中起到的作用是非常大的。
我这里是个人站点,所以不存在什么策划美工,这里我自己操刀,设计我喜欢使用Photoshop,参考一些常见的站点,结合自身的需求,我自己设计出了页面,PSD格式保存,当然,美工设计的时候需要和策划者沟通,是否满意。

当然这个只是最初的设计稿,和最终的网站效果还会有一些小的出入,当然这个需要沟通,如果是企业建站或者是团队运营,那就需要策划者或者相关管理者和美工及时共同,因为设计稿只有被确认了之后才可以切页面。

设计的话,我个人偏好使用Photoshop,当然用哪个工具无所谓,最主要的就是熟练应用这个工具,比如公司美工就偏好用Fireworks,这些是不用去管的,做出了效果图确认完成即可。

当然公司或者团队做站遇到一些问题,例如美工设计出来的效果图,需要修改,不可以改动太大,这个需要策划人员之前就策划好,当然在美工设计的时候策划者会有很多新的想法和概念,这个时候需要尽量控制,在方案定稿之后就不要去做大的修改,这样没有条例的制作会耽误时间,而且起到的效果也不好。

3.空间购买,一般这里是域名和空间的购买,现在主机IDC很多,一般去常见的主机那里购买即可,当然这里购买需要注意的就是需要购买的空间类型。

现在的网站空间非常便宜,费用不搞,所以在购买的时候考虑的就是空间需要支持PHP+MySQL,在购买之前你要问空间商是否完美的支持DedeCMS的系统,当然如果空间商有专门的DedeCMS空间则择优选购了,当然如果空间商那里有DedeCMS站点的案例那就更加不错了。

域名我这里注册的因为个人比较热衷于.com,并且大家熟知的也是.com。不过.cn也是很不错的,购买空间一定要去正规空间商那里去拿,否则会出现很多问题,当然团队运营的一般都是用服务器,这里我不做过多描述,这类的如何选购空间的教程已经非常多了。

有了空间和域名,可以先把DedeCMS安装起来,如何安装这些基本的内容可以去DedeCMS的帮助中心(help.dedecms.com),或者查看论坛置顶帖中的相关操作手册。这些过程都是非常简单的,如果出现问题可以问问其他网建的朋友。

4.制作模板,制作模板主要就是将设计的模板切成HTML静态页面,然后套上DedeCMS的模板标签。

因为我们查看网页并不是就看一个图片,我们需要超链接、表单这些东西,所以需要将设计的图片切割成网页格式。

如果是制作DedeCMS的模板需要了解几个部分,1.模板文件类型;2.文件路径;3.模板标签。

我们的网站分为首页、频道、栏目、内容,因为我们这里主要就是首页、栏目、内容,还加上一个简介的页面,这里需要做的模板就4个,我们参考织梦的模板制作规则了解到需要做:index.htm(首页模板)、list_article.htm(列表页模板)、article_article.htm(内容列模板)、list_article_content.htm(栏目简介模板)。因为系统默认的模板路径是/templets/default,我们这里重新制作模板需要修改模板路径,我们在templets下面创建bufuzao文件夹,这个文件夹就是我们新的模板,我们在系统后台[系统]-[系统基本参数],把这个默认模板改为“bufuzao”,这样我们模板路径就指定好了。

然后我们切的图片放在/templets/images里面,css样式放在/templets/style里面,我们css样式命名为bufuzao.css,这样我们就完成了模板文件的规划。

接下来就是切页面,切页面是一个细致的工作,需要美工一点点制作切割,因为我这里是个人网站,所以美工也是我自己,关于如何切页面,这个书店、网上都有很多方面的教程,我这里就不介绍了,主要就是把设计的几个页面按照文件格式保存好。

所有的页面切成HTML之后我们就开始嵌套织梦的标签,当然嵌套标签需要很熟悉织梦的标签相关的内容,这里已经在http://help.dedecms.com/manual/tagmanual/这个手册里面把标记都列出来了。

当然标签嵌套的时候需要在网站中添加原始的数据,这样调用才能够看到相应的执行效果,当然如果有技术人员、二次开发人员可以同美工配合很好的完成这些事情。

5.网站调试,模板制作完成以后我们接下来结合网站现有内容进行调试,这里需要在DedeCMS把网站栏目划分开来,把网站的内容填充进去,初始建站的时候我们是需要收集一些网站的内容的。

然后在服务器上安装模板,再结合内容修改调用标记,模板在制作的时候调用标记可以不加typeid,例如在首页模板的arclist标签中,我们不需要指定typeid调用哪些栏目,我们在调试的时候再{dede;arclist typeid=’x’},加上typeid的相应值。

当然,在模板调试中美工、策划也会加入一些细微的调整拥有更好的用户体验,比如在内容页加入引用、发送这些功能,这些小的,不影响全局的功能添加起来很方便。
至此页面部分已经全部制作完成。

6.网站运营,这个过程就是一个持之以恒的过程,需要首先需要网站推广,推广就需要了解一些网络营销方面的内容,小到QQ消息广告、大到举办活动进行推广,这些都是提高网站的知名度,当然很多网站如果有好的内容,保持长期更新,会有很多人来看。我们常说道的SEO,也是推广的一种方式,便于搜索引擎搜索,让更多的用户来访问我们的网站,DedeCMS在这方面是几个CMS中最佳的。

网站在运营中会不断的发现问题,作为一个站长不要惧怕这些,最怕的就是你不去解决这些问题,我们在每次遇到问题的时候都需要灵活的想办法去应对,很好的去解决。尽量让用户浏览你的网站感到舒心、放心。

至此,用DedeCMS建网站部分的内容全部完毕,我们这里发现有了DedeCMS建网站更多的经历不是放在技术开发上面,更多的是对网站、对行业更深一层次的挖掘,注重的不单单是技术,更重要的是网站策划和运营。所以说,有了DedeCMS我们就拥有更多的时间把重心放在网站文化建设上面,而所有的技术问题都交与了DedeCMS。

三招让你的dede快10倍以上
测试数据是无意中得到的企业黄页的数据,数据量将近90万,都是完全真实的数据,测试使用的程序是dedecms4.0版本,你问为什么不用dedecms5.1?那是因为我们为了优化,针对dedecms做了很多修改,如果使用dedecms5.1,我们害怕收到法院传票……,补充一句,以下的优化方法均能在dedecms5.1中使用,请在理解其原理的基础上自行完成。


测试数据是无意中得到的企业黄页的数据,数据量将近90万,都是完全真实的数据,测试使用的程序是dedecms4.0版本,你问为什么不用dedecms5.1?那是因为我们为了优化,针对dedecms做了很多修改,如果使用dedecms5.1,我们害怕收到法院传票……,补充一句,以下的优化方法均能在dedecms5.1中使用,请在理解其原理的基础上自行完成。
未优化前我们测试发现主要有三个经常性的操作在dede大数据量的情况下影响管理性能,分别是文档生成、列表页生成和栏目列出所有文章,我们就针对这三个方面进行优化实践。
以下是测试数据的基本信息:

1.改进文档生成速度

问题提出:和我们前一次测评结果相同,dedecms的文档的生成速度惨不忍睹。使用默认模板(article_article.htm),平均接近30秒才能生成20个页面(如图),按照这个速度生成下去,90万的数据全部生成网页能等到头发都白了。那么到底问题在哪里呢?

问题分析
先排除表索引的问题,因为dede的数据库已经在数据主表(dede_archives)为主要字段都建立了索引。再排除主要内容的提取效率问题,因为页面生成过程中读取页面中的文章数据,每次需要到主表和附表中select取得id值唯一的数据内容,这个SQL语句的效率我们通过直接在mysql中运行SQL语句测试,执行时间非常短,因此这也不是最大的瓶颈。

终于在页面生成过程中,我们发现程序执行了数次主表(dede_archives)查询,并取出符合一组复杂查询条件数据的操作,查询效率非常低,原来是它在影响效率!通过调试跟踪,我们定位了问题的关键,元凶就是模板中arclist标签。Arclist标签是很多人很喜欢用的标签,因为它比较灵活,能从数据中取出热门、最新、相关等各种类型的文章列表,但是arclist标签每次都会带着一大推搜索条件去主表中查询,实际上对于一次性生成大量文章来说,如果使用相同的模板,arclist对数据库的查询操作只是简单机械重复罢了,为此而耗费了大量时间绝对是不值得的。接下来我们给出问题解决的建议。

解决问题

解决方案1:去掉最终页面模板中的arclist标签,或者尽可能少用。这个方法虽然能极大提高效率,但是无异于泼水把孩子泼走了,对于企图增加访问pv的网站来说,不建议使用。

解决方案2:建立arclist缓存,将每次arclist生成的数据放到临时目录或者缓存当中,在文档生成过程中判断缓存是否有更新,如果无更新,直接使用缓存数据。这个方法无需改变模板,对于提高生成效率也有一定的效果,但由于对程序改动较大,酌情考虑使用。

解决方案3:也是小组建议的解决方案,那就是充分挖掘现有dedecms的功能,在尽量不改变程序的基础上,大幅提高效率。具体的方法就是通过freelist(自由列表生成)功能事先生成热门文章、最新文章、相关文章等内容的列表页面,然后使用dedecms提供的include标签直接引入文档页面。标签格式为:{dede:include file='列表页面文件名称' ismake=' no'/}。这个方案优点在于仅增加部分操作步骤,没有改动任何程序,性能提高亦非常明显。下图就是我们利用这个方法优化后的生成速度,仅用时50秒就完成了1500多页的文章生成,达成目标优化效果。此方案由于增加了操作步骤,懒人慎用。


2.改进列表页面生成速度

问题提出
接下来我们继续测试列表页面的生成,这次我们学乖了,先把模板(list_article.htm)中的arclist标签删除后再测试,但是生成效果依然非常不理想。如下图,每个列表页面生成时间接近20秒(我们修改了页面结果输出提示,为了大家更方便看到每个列表页面生成时间),按照每页50条数据计算,生成单个栏目的3万数据理论上也要花费3个多小时,生成90万数据……无语ing。由于列表内容使用的是list标签,这是一个和arclist有点类似的标签,因此我们不能延续上面的做法来解决问题,只能另辟蹊径。


问题分析
由于目标锁定在list标签,测试的过程就简单了。我们直接使用dedecms中list的查询语句做优化分析,很快发现了问题。我们测试了list中的sql查询语句,以下代码就是list用来查询数据库中对应条件的SQL语句,执行时间大约为15秒,效率很不理想。

Select arc.ID,arc.title,arc.iscommend,arc.color, arc.typeid,arc.ismake,arc.money,arc.description,arc.shorttitle, arc.memberid,arc.writer,arc.postnum,arc.lastpost, arc.pubdate,arc.senddate,arc.arcrank,arc.click,arc.litpic, tp.typedir,tp.typename,tp.isdefault,tp.defaultname, tp.namerule,tp.namerule2,tp.ispart,tp.moresite,tp.siteurl from dede_archives arc left join dede_arctype tp on arc.typeid=tp.ID left join qiye_addonarticle on arc.ID = qiye_addonarticle.aid where arc.arcrank > -1 And ( ( arc.typeid='1′ ) or arc.typeid2='1′) order by arc.sortrank desc limit 0,50

我们注意到这个SQL语句中的where子句使用了and和or的多种条件判断,经验告诉我们如果查询子句中使用了in或者or语句,会导致全表扫描,这样的话索引的效率就无法体现。我们简化了where子句的判断条件进行测试,结果发现删除了or子句之后,查询效率大幅提升,上面的查询语句只用时不到1秒就获得了查询结果。这就是问题关键。

对于list查询来说,arc.typeid2='1′这个条件目的是查找某个文章所属的第二分类,而事实上这个功能在大部分情况下很少使用,因为我们大可使用标签(tag)来完成一篇文章的多个不同分类的归属,因此我们修改文件inc_arclist_view.php,在查询语句中直接删除了typeid2的条件判断,并在pub_db_mysql.php中改进了查询执行函数(主要用于提高sql语句执行的效率,对最终结果影响不大),得到的最终测试结果如下,平均每个列表页面的生成时间下讲到不到1秒,3万数据600个列表页面生成只需要花费不到10分钟,优化目标达成。

3.改进文档管理效率

问题提出
在90万这个数据量的情况下,dedecms打开栏目文章列表,尤其是打开所有档案列表企图进行文章管理的时候,速度简直无法让人忍受。我们点击所有文档列表,耐着性子等了将近2分钟,文章列表页面才姗姗来迟。到底什么在制约着文章列表速度呢?

分析问题
控制显示文档列表的程序是dede/content_list.php和include/pub_datalist_dm.php,其中content_list.php是主控制程序,完成列表的参数传递和模板显示,而pub_datalist_dm.php用于完成数据查询和分页等操作。通过程序调试,我们找到了问题的结症在于pub_datalist_dm.php程序中对于全部数据的统计花费了大量的时间,而使用limit的列表数据的查询并不是性能的瓶颈。影响效率的关键代码为:

$this->dsql->Query();
$this->totalResult = $this->dsql->GetTotalRow();

这里所用的数据总数统计的方式居然是通过content_list.php传递过来一个复杂的查询语句,然后执行这个查询并将结果保存到数据集中,最后通过mysql_num_rows函数统计结果集中行的数目,完全没有想到dedecms居然走了一个最远的路途完成一个最简单的操作,难怪效率低得可怕。因此只要我们改用最常见的count方法来统计数据,执行效率就能大幅提高。

解决问题
首先我们修改了程序content_list.php,构造了$conutquery参数用来保存统计使用的SQL语句,代码如下:

……
$conutquery=”
select count(*) as totalResult
from #@__archives
left join #@__arctype on #@__arctype.ID=#@__archives.typeid
left join #@__channeltype on #@__channeltype.ID=#@__archives.channel
left join #@__admin on #@__admin.ID=#@__archives.adminID
$whereSql
order by #@__archives.{$orderby} desc”;
……

然后将这个参数和查询$query参数一起传递给pub_datalist_dm.php进行处理。

$dlist->SetSource($query,$conutquery);

随后将pub_datalist_dm.php中获得数据总数统计的代码替换为使用$conutquery参数:

……
//统计优化
$row = $this->dsql->GetOneSimple($this->countSql);
$this->totalResult = $row['totalResult'];
……

其中GetOneSimple是新构造的一个用来执行SQL语句的函数,我把它放在了pub_db_mysql.php类里面,主要的用途就是返回SQL语句执行结果, $this->countSql是上一个程序传递过来的统计使用的SQL代码,$this->totalResult用来记录数据统计结果。程序修改之后,获得了满意的效果。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics