Wordpress以其强大的功能和丰富的扩展性,赢得了众多的使用者。但一直以来,Wordpress的低性能也是广大Wordpress郁闷的事。但是,或许因为大多数的Wordpress使用者是用来搭建小型个人博客,所以对性能也并不看重。
我使用Wordpress搭建了一个CMS网站,现在的文章数达到了3万,数据库达到了100M。此时,Wordpress的低性能体现出来了,极大地影响了我的网站访问。有人认为,尽量减少插件、使用简单的主题可以加快Wordpress的速度,但我认为,牺牲功能来换取性能,是不值得的。为此,我花了些时间对Wordpress作了优化,在保留足够的功能的前提下,尽量加快Wordpress的运行速度。
先说一下我的VPS服务器配置:
CPU:单核Intel(R) Xeon(R) CPU L5420 @ 2.50GHz(单核CPU运行Wodpress可真够吃力)
内存:256M
硬盘大小:对WP性能没影响,就不说了
Wordpress的低性能体现在两方面:一是加载的文件、代码太多。下面具体说说针对这两方面的优化;一是数据库设计不合理,数据库查询次数太大;
针对Wordpress加载文件太多的优化,我在服务器上安装了eAccelerator缓存,把PHP文件都预先加载到内存里,再读取,就快多了。另外,在Wordpress前台,我去掉了语言包,我已经把中文都写到主题里了,所以前不几乎不需要语言包了。实践证明,去掉语言包,能省至少30%的页面执行时间!
针对数据库的优化,大家首先想到的可能是使用DB Cache Reloaded插件或者Memcached缓存。但是这两个方法我都不用。我的网站放在一台只有256M内存的VPS上,再也没有多余的内存使用Memcached了。不知是什么原因,我在多台服务器上测试了Memcached,启用Memcached反面比没有启用Memcached,页面执行时间还要慢。另外,启用了mysql里的query_cache功能,这同样可以优化mysql查询。
我对主题作了修改,使用“区块缓存”来减少数据库查询。Wordpress运行一个页面,头部、中间、侧边栏、底部,几乎都要读取数据库,而往往只有中间部分是每个页面不同的,其他部分都相同。例如对于日志页,如下图所示,1、2、4、5这几部分,在每篇日志里都是一样的,所以,可以把这几部分缓存起来,不用每次都查询数据库。
通过以上优化,日志页面的速度已经不错了,可是,分类页面速度还是很慢。这是因为分类页用了多个联合并且带有IN的SQL查询,效率本身就低,再加上我的服务器配置低,所以就很慢了。这也是因为Wordpress的数据库设计不合理,WP把日志的标题、正文全部存储在同一张表里了,我的wp_posts表就60M大小了,每次select *产生的数据量都很大。为此,我新建了一个表,该表只存储日志的标题、作者、日期等信息,不存储正文。表的体积大大减小,大约只有原wp_posts表的十分之一,查询就快了很多。
在服务器优化方面,我使用lighttpd来代替庞大的apache,既节省内存,也让wordpress运行得更快。另外,开启了lighttpd的expires功能,把图片、JS、CSS等文件缓存在客户端的浏览器里,不用每次都从服务器下载这些文件。还有,启用gzip压缩功能,减少传输的页面文件大小。
好了,以上就是我的优化方法,大家可以访问我的网站,体验一下速度 www.zuowenba.com
下一篇 php目录操作函数总结