网页CMS性能:每秒页面数(Joomla、Drupal、Plone、WP)
注意:我对网页编程不太了解,所以如果这个问题很简单,请多多包涵。另外,也请不要评论这些产品之间的比较有多么不完美。我的问题不是关于它们之间的竞争,而是想知道为什么它们的速度都这么慢。
我刚看到一个基准测试,测试了Joomla、Drupal、Wordpress、Plone3和Plone4。让我震惊的是:它们的速度在出厂设置下大约是每秒4到14个页面。这怎么可能呢?为什么它们这么慢?一个内容管理系统(CMS)应该只是从数据库查询数据,然后把这些数据放到漂亮的模板里。数据库的速度很快,模板的处理也应该很快(只是替换文本,没什么大不了的)。我们的机器也非常快,但这些知名的CMS却只能每秒生成几个页面。这是为什么呢?
7 个回答
它们慢的原因有几个:
1 - 大部分系统都很模块化,这意味着需要更多的文件、更多的代码和更多的数据库查询。
2 - 这些系统通常(除了WordPress)都想要做到所有事情,设计一个能应对各种情况的系统,这样就变得更复杂,也更难调整。
3 - 目前大多数系统都支持PHP4和PHP5,这又增加了额外的工作量。
4 - 它们据说是为了让非技术用户也能使用,这就意味着它们常常需要以不那么高效的方式来处理事情。比如,Drupal的CCK和Views让不会编程的人也能创建数据库表和SQL查询,但问题是这些表和查询设计得很通用,相比于专门编写的代码,它们效率较低。
5 - 这些系统通常会使用很多数据库查询,Drupal在一个非常简单的页面上就会使用大约40个查询,如果你去他们的论坛看看,会发现有人说某些页面的查询次数甚至达到几百次,或者超过一千次。
当然,它们提供了缓存功能,Drupal通过一些模块可以获得不错的性能,但问题是,Drupal(和Joomla)的一个卖点就是可以用来创建社区网站、论坛、类似Digg的网站,而这些网站在缓存方面的效果有限……
因为要完成这些操作需要大量的处理能力。并不是简单的“查询、替换、渲染”这么简单。这些产品都是为了适应各种不同的使用场景而设计的,并且在某种程度上可以扩展,所以你提到的这三种基本操作其实被拆分成了很多很多的操作,而每一个操作都会消耗时间。
总的来说,系统越灵活,开箱即用时的速度就会越慢。
一个内容管理系统(CMS)应该只是查询数据库,然后把数据放进漂亮的模板里。
其实并不是这样。现代的主要内容管理系统非常复杂。一个普通的网页不仅仅是一些正文和标题,它还涉及到动态的、基于类别的内容查询,这些查询会从网站的多个区域汇总信息;更不用说安全设置和用户特定的内容区域了。例如,加载 http://www.volvogroup.com 这个网站时,至少需要进行7个这样的查询,还要通过网站结构进行递归来生成导航,同时还要连接外部系统来获取新闻和投资者关系的数据。考虑到这些,想要每秒处理几百个访问请求,确实需要强大的服务器集群来支持。