无剑网 Logo

无剑网

㊣Vio.Lam 的网络进化笔记.

主流CMS系统的选择比较指南书

发布: 时间: 分类: 文档和工具

一、前言

虽然2007年的冬天还没过完,但是网络行业依然百花齐放战火纷飞。有些网站一边数钱一边偷笑,也有某些不断烧钱的网站前景迷茫。更多的是大量中小型网站,在夹缝中生存。以前,论经费论技术开发和内容编辑,中小型网站对大型门户是望尘莫及的。而现在,很多网站都有了一个看起来很门户的首页,更有一些已经披上了Web 2.0的外衣,几乎找不到往日那丑小鸭的影子。这些变化背后的驱动力,大部分都是CMS内容管理系统的功劳。选择一个合适的CMS,能为网站设计工作节省大量的时间和费用。

本文倾向于介绍中小型的CMS系统,至于大型CMS的选择,那是需要经过大量的复杂论证才能确定下来的,往往是选择一个收费的大型系统进行二次开发。原创作者:无剑网(http://www.nosword.com)转载请注明。

二、什么是CMS?有什么用?

CMS (Content Manage System) 是内容管理系统的缩写简称。广义的CMS是对一切信息资源的管理,包括文章图片和动画视频等一切数据内容.也可以简单地认为,CMS就是用来管理和制作网站的。与Dreamweaver等网页三剑客这类手工网页设计软件相比,CMS进入了一个半自动和批量处理的时代,CMS本身就是网站的一部分。通常,我们会把网站分成前台和后台两部分,前台用于文章展示和交互互动,后台则负责设置参数、数据库操作、文件维护和用户管理。

通过使用CMS,可以大大提高网页处理效率和规模,释放手工劳动时间,也使得网站的维护负载和交互能力上升到一个新的高度。

三、CMS应该具备的要素

一个成功的CMS必须兼顾考虑多方面的因素。因为CMS最终是为网站建设服务的,所以从开发设计到决定投入使用都是非常复杂的过程。幸运的是,目前已经有许多做得很成熟很出色的CMS了,我们不需要自己开发或者只需做少量的修改就能直接应用,花费的成本非常小。由于现有的CMS已经多得令人眼花,比较和选择一个适合自己CMS,仍然是需要考虑讲究的。

(1)CMS的结构/系统架构最关键
对于一个CMS,系统架构无疑是最关键的因素。内部架构决定了这个系统的处理能力和工作方式。灵活的系统架构能够为组织网站提供强大的动力,即使其他细节不完善也可以做得非常出色。相反,一些设计结构不合理的CMS,在运用中就会左右碰壁,这里不能修改那里不能设置等,无论功能怎么丰富都是先天不足,寸步难行。笔者的无剑网就曾经因为选择不恰当吃了一个大亏。
系统架构强弱表现在内容的储存编排,数据表的设计分配,编辑管理员之间的分工合作,资源之间的交叉连接和循环再用等。根据CMS的定位不同,有适合个人小型网站的轻量级CMS,也有专为中大型门户和网络公司设计的大型CMS。只有极少数优秀的,才能有很大的弹性,小至几个页面的博客,大到上百万页的门户级网站都能得心应手。

(2)模块化是双刃剑
国内的CMS都喜欢用频道进行模块化开发,为文章、图片和下载等频道各定制一个对应的模块。这样做法虽然能准确的针对该类型的特点制作功能,缩短编辑周期,但也非常不利于资源之间的连接和交叉,并且不是标准模块格式的东西都不容易管理,比如文章和图片、下载的混排,或者相册和产品等这些还没有相应模块支持的"异类"。

最近的CMS趋势倾向于用插件的开发模式。插件比模块化分得更细,也更为灵活,需要RSS订阅的时候就装上一个RSS插件,需要评论留言、统计和相册的时候挂上一个相应的插件就行了。当这些不需要这些功能,还能随时把插件卸载下来。需要指出的是,有的CMS把所有功能都做成插件了,甚至把核心的资源管理功能也搞成了插件的形式,这种形式好坏笔者不敢随便评论,它们需要以后市场的检验。

(2)CMS的生命力
选好了一个CMS并做好了网站后,事情并不是这样就完了。你已经和它坐在同一条船了,因为程序的升级或者重新选用其他系统会引起网站大量的变动,改版是非常困难的。说不定一年后作者就失踪,而你的网站还要继续营运下去。那时候要么求神拜佛希望他回来,要么就自己动手开发,两者都不是好消息。

第一开发团队的实力很重要。一个人写出来的系统最脆弱,容易受他个人生活影响,尽管系统结构很好,他也能完成一次又一次的升级不让fans失望,但已经是精疲力尽了。通常是两到三个最为适宜。

第二要考虑团队的盈利模式,兴趣和理想固然重要但是它们都不能马上变成面包。开支比收入多缺少支援,这个系统就不得不停止开发了。

第三是源代码加密还是开源?加密的代码不但看不懂,关键时刻有bug也无法自己进行调试修改。而开源的,总体来说具有更多可操作性,也有更多的人能够为它开发扩展和插件。关键是,作者跑路后网站还能自己掌握。

(3)模板解析渲染
CMS对于文档的批量处理,模板是非常重要的手段。模板使得数据内容与表现样式分离,设计多种模板也能缓解网站样式单调的情况。模板实际上是一个预先写好的html文档,其中涉及用到不同数据的地方用标签或者占位符代替,然后再生成的时候再把数据替换进去。这样界面设计不再涉及程序的工作,设计页面只需要把表示的占位符安排好就行了。

目前大部分的CMS都已经有模板解析功能。但模板解析也可以是一个非常复杂的过程。简单的话,仅是对比和替换字符,复杂的也可以复杂到模板标签都成为一门语言,专用于模板中的数据编排。

(4)CMS与搜索引擎优化
据说快到八成的人都用搜索引擎作为上网入门,设计网站已经不能不考虑对搜索的优化。对于一个CMS不一定要刻意去讨好搜索引擎,但是目前搜索还在发展之中,还是有一些东西它不能识别出来。例如图像中的文字、Flash中的导航、Javascript脚本写成的复杂AJAX交互等等。CMS对于搜索一些基本因素还是必须具备的,我见过有公司设计出来的企业网站,为了追求效果,首页只有一个Flash开场动画,或者是几张图片,并且把说明介绍都嵌进了图片里面,这样的网站对于搜索引擎几乎是无法识别的,最多就是收录一个简单页面。有一段时间还很流行用那些韩国的Flash菜单导航,结果把原来的链接都包含到Flash里面,而没有为搜索引擎的蜘蛛留下一个入口,这样的设计对搜索引擎也是很不友好的。另外,也不要把菜单导航放到JavaScript脚本里面,如果需要用JS做菜单,最好先用html标签,然后再用JS对这些标签指定触发的功能,这样就算JS无法工作,导航菜单也能正常运转,并且对搜索引擎友好。

(5)CMS整合论坛程序的

由于已经有许多成熟优秀的论坛程序存在,所以CMS开发也没有必要再弄出一套自己的新论坛,不但要耗费精力,并且做出来的也不一定能比现有的更完善成熟。所以大部分都提倡CMS整合现有的论坛系统,比如ASP方面的动易论坛,PHP方面的Discuz、PHPWind等。结合这些论坛最关键的地方在于注册会员的数据接口整合。CMS和论坛程序使用统一的会员注册数据,才不会出现CMS用户名与论坛分离不一致的问题,并且会员在网页和论坛切换省去再次注册登陆的麻烦。整合问题在比较流行的几个成熟CMS做得不错了,已经为这几个著名的流行论坛预备了良好接口。

四、操作系统平台的决裂

选择哪种操作系统平台是一个CMS首先应该考虑的东西,不但决定了使用ASP语言还是PHP语言,并且关系到成本和负载扩展等未来的麻烦。目前服务器系统主要是Windows和Linux争天下,Unix在中小型应用比较少见。Windows平台上的ASP+Access/SQL数据库和 .Net系列+SQL数据库是两对黄金组合。而Linux上,Apache服务器+MySQL+PHP数据库也是令人喜爱的黄金团队,人们把这个组合的头一个字母连在一起,就是流行的Lamp架构。由于盗版和习惯上的问题,Windows平台在国内占了主要地位,ASP和ASP.Net也理所当然地成了霸主,不过最近PHP也开始崛起。这种情况在国外却刚好相反,因为正版Windows和SQL服务都是需要交费给M$的,所以架设成本远比Lamp架构高,并且PHP是开源的,具有顽强的生命力和丰富的扩展,Lamp在美国等地才是主流,只有为数不多的网站采用了Windows平台。

也许有人要提出编程语言只是一种工具,好坏不是取决于使用ASP和PHP,ASP加上DLL组件一样能实现许多新功能。我承认只要结构设计得当,的确不管什么程序都能发挥很好的能力。但是例如ASP,微软已经不再支持这种语言,鼓励转到新的.Net平台,ASP就已经日渐衰老,并且在缩短开发周期上,自己再去编写一套DLL组件显然比不上利用各种已经现成的开源代码容易。在安全性、对数据库的支持上,ASP等老语言早已显得年老色衰,没有多少吸引力了。例如PHP有图像处理能力,ASP则必须通过组件才能具备。另外在服务端安全性和资源丰富性等方面,ASP也无法与PHP相提并论。选择合适的代码平台,显然能省去许多麻烦事情,并且又得到许多更实用的特性。

五、规模又是CMS的一条分叉路

对于小网站来说,总共的页面数量一般只有几十至几千页,访问量也不大,所以这种网站最常见的就是用ASP+Access建设的。例如我的无剑网http://www.nosword.com就是简单地用了一个Zblog博客程序便足够。Access这样的数据库大概能负载十万篇文章左右的数据,尽管它的标称值可以存放3GB的大小。但是在十万条记录的时候,检索修改之类的数据库操作会开始力不从心。所以当网站页面发展到十几万页的时候,同时在线的用户增多,规模瓶颈逐渐出现了,这个时候就必须开始考虑转用SQL等其他数据库。如果规模再大点,流量再多一些,达到了一个服务器都无法承受的地步了,那就必须再添几部服务器,那更复杂的问题出来了,如何保持这些服务器之间的数据的分布和同步,如何分配资源又成了难题。对于门户网站那是几百台的规模,光处理广告显示和统计日志就需要许多服务器。CMS在这个问题上扮演了一个很重要的协调和优化角色,CMS架构如何设计,不仅是消耗Money和人力了,甚至关系到网站的生死存亡。

因此规模问题都是必须事先考虑好的事情,设计太大则浪费资源和开发精力,设计过小到出了问题再修改麻烦更多。举个最好的例子就是北京奥运的购票网站,页面不多,但是访问的用户极其巨大,官方原本的设计是每小时几百万的访问,但是实际情况是那几个小时来了几千万的访问,严重超出了网站的负载能力,所以很多用户都得到了很坏的感觉。这个"意外"直接导致某人被调职。

同样的事情还出现在那些号称Web 2.0的网站上,因为它们通常提供许多炫目的功能,而这些功能都是消耗数据库资源的大户,频繁的数据库操作,使得一个服务器能承受人数下降了很多。如果是提供软件下载的网站,需要比较高的带宽,那还必须做好电信带宽的预算,因为你会发现每年的带宽租用费用会是很惊人的。部分人对网站不熟悉,只凭着满腔热情,而没有仔细考虑好规模,在吸引到许多用户的时候,服务器却挂掉了。网站长时间无法打开,正常功能无法运转,最终也就是辛辛苦苦拉来的用户严重流失。

六、主流的流行CMS一览

不断有新的CMS开发出来,也有不断有一些老作者不知所踪。所剩下来的一些老牌CMS,都是久经考验的,有些已经成立了专门的公司。目前ASP方面,动易、风讯、新云、创力、乔客、科汛等老资格,也有新秀如JTBC和KingCMS之流。其中比较推荐“动易CMS”以易用性著名,是ASP中最为广泛的CMS。KingCMS也值得参观,虽然时间不长但是却吸收了许多老CMS的优点,并且比较小巧受到许多人追捧,缺点就是它尚未形成大规模。PHP方面就更多了,例如Mambo、Joomla、Drupal等强大的国外优秀CMS,获得无数赞誉。也有国内的例如帝国CMS、PHPCMS、SupSite、DEDE、Xoops等。其中任何一个都能让建站的人兴奋半天,具体特性评价我就不多说,可以自行搜索它们的名字。可以根据自己的需要再定夺。这些CMS之中有一些只是轻量的内容发布工具,离真正意义上的大型CMS还是有一段距离,但本文只谈中小型的网站CMS选择,大型CMS就不在这里举列了。

这里不得不提一点事情,如果你看过一些ASP方面的CMS介绍,他们可能会提到一个叫Tsys的东西,誉为ASP方面最好的CMS。诸如Tsys就是典型的架构和弹性都非常好的CMS。但Tsys生于2005年,后来那作者蒸发了不再开发,所以它到目前为止仍然是个半成的系统,没有多少多余的扩展功能,所以很自由也很荒芜,但是非常适合那些有一定写程序能力的人使用。笔者对它也十分喜爱,曾经考虑过用它架构网站,最后还是因为种种原因放弃了。Tsys像个孤儿,但是它天生具有许多优点,生命力很强。已经有粉丝在为它用.Net版本重写,也有人已经写出了它的PHP版,并且在网络上已经能找到了,名为“Tsys For PHP”。也有一个叫“WoodPlow”的CMS刚发布不久,基本上吸收了Tsys的优点。这些都是题外话了,如果要省事还是用一些比较主流的CMS,无论是上手难度还是功能模板都比较完善丰富,少数地方才需要自己动手修改。

七、根据自己的需要选择合适的CMS

(1)尽量选择已经存在的CMS,在现有基础上进行二次开发,如果有必要的话,购买收费的CMS也可以考虑。(2)事先粗略估计自己的数据量和交互负载。(3)看看自己的开发能力程度,是否有团队和熟悉的专业人员。(4)从未来的发展蓝图规划目标,可以考虑先开放部分功能。(5)如果不是结构性的需要,不要轻易改版,改版意味着对用户习惯和搜索引擎都是一次大地震。所以扩充能力也很重要。(6)从资金预算上考虑。(7)如果要求某些特色功能,多数时候是需要自己开发的,可以考虑先用插件的形式。(8)仿Web 2.0的CMS也已经逐步出现了,稍后我打算再为它们写一个简要介绍,届时会发布于无剑网。

八、总结

尽管本文对CMS提出了诸多要求,但是符合这些条件优秀CMS依然有不少。值得高兴的是随着它们的百花齐放,建网站可用的选择越来越多,样式也更加漂亮,功能更为完善丰富。这些成熟的CMS已经为我们本身节省了无数的时间精力和成本,CMS让未来的网络世界更加精彩。

收藏到书签:

Valid Code

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

主流CMS系统的选择比较指南书