一个小问题让PHPWind的访问速度败给了Discuz!
2009 11 15 02:57 AM 2554次查看
由于国内的PHP论坛基本就2家来竞争:PHPWind和Discuz!,因此对于它们的性能,自然成为了大家关注的焦点。
我选择了它们的官方论坛发帖最频繁的2个版块,多次访问该板块的前2页来测速。
数据库查询时间都在10毫秒左右,而PHPWind要略快1~2毫秒;而在数据库查询次数方面,PHPWind为3~4次,Discuz!为6~7次。
如此看来,假如未作弊且双方服务器性能相当的话,Discuz!的数据库效率应该是略逊于PHPWind,但在程序效率方面则要略胜一筹。
而这2款程序最大的区别应该是模板和缓存系统,大概差距就是它们造成的。
再测ping服务器的速度,PHPWind为19ms,Discuz!为16ms,差距很小,都是快到令人羡慕的速度。
接着拿Firebug测试响应速度,结果出乎我意料。
获取PHPWind的动态页面约需390ms,但整个页面有多达35次HTTP请求,虽然其中31次返回了304 Not Modified,也共用去约960ms的时间。
而获取Discuz!的动态页面约需660ms,但只有4次HTTP请求,仅用去约910ms的时间。
这表明PHPWind的性能要远胜于Discuz!,但在静态文件的缓存设置上出现了很大的问题。
实际上Discuz!的页面上也有很多图像等文件,却未发出HTTP请求,于是我观察了一下响应头,发现比PHPWind多了这样一行:Cache-Control: max-age=864000。
这个Cache-Control就是用于控制客户端应采用的缓存策略的,这里是让它缓存864000秒(即10天),在缓存未过期前,除非客户端使用刷新(F5)或强制刷新(CTRL+F5),否则都不再对其发出HTTP请求。
关于它的详细用法,可以参考《面向站长和网站管理员的Web缓存加速指南》这篇文章。
从响应头中还能看到,PHPWind使用的缓存服务器(cache.phpwind.net)是squid/2.6.STABLE22,动态页面则由Zeus/4_3生成。其实squid也设置了Expires头,但遗憾的是,它设置的时间不对,无论Date还是Expires字段都是2009年9月的,但现在已经是11月了。或许PHPWind该去检查一下服务器的时间了…
而Discuz!使用的是nginx/0.7.62反向代理服务器,它的静态文件性能算是世界顶尖的,因此自然在缓存方面考虑得更周到,甚至还很贴心地加上了Keep-Alive: timeout=10。
最后强调一下,这个问题是服务器设置造成的,而不是PHPWind程序本身的错,所以使用它的站长无需担心。
0条评论 你不来一发么↓