WordPress是一款非常流行的免费开源Blog平台,但是由于其扩展性和兼容性的“负担”,性能问题一直颇受争议。我07年从LBS转换到WordPress的时候,周围许多优秀的PHP程序员都嘲笑过它的PHP代码。然而,经过数年的使用,尤其是对整个WordPress生态链的了解,我越来越肯定:WordPress其实可以做的很好,只是你还没有找到合适的方法而已。
我认为,高流量WordPress博客可以从以下几点入手进行优化:
1使用LAMP架构而不是WAMP(Windows-Apache-MySQL-PHP)
我对服务端的原理知之甚少,但就我使用LAMP和WAMP的经验来看,前者在性能、稳定性上都占有几大优势。相比WAMP,Linux服务成本极低,而且相比Windows,Linux的理念本身也更为专注于服务器管理和操作。例如,使用wget升级WordPress,下载插件,都十分方便;使用mysqldump和crontab备份数据也安全、简便、可靠。
2安装wp-super-cache等静态缓存插件
我的博客一直使用wp-super-cache,效果很好。它能够极大程度地节约PHP的执行成本和数据库查询的压力。下载地址。(最好是在LAMP下,我没有测试过WAMP的情况)
不过,安装了这款插件之后,PHP端对客户端的API就全部失效了。例如你无法在PHP端获得客户端的浏览器类型、版本、Referer值等。如果有相关功能,这时候需要一些JavaScript技巧来改善。例如用jQuery的
3制定一些插件
如果你的访问量足够高,那么绝对有必要亲自动手或者请懂WordPress系统的人来制定一些插件。很多插件为了考虑兼容性(包括服务器端、客户端),采用了很保守的设计。而针对你自身的系统,这些保守的设计很可能就成为了累赘。例如我自己有一套jQuery的库,就不必再用插件自带的jQuery或者其他Javascript库了;插件还有一个问题也是免费开源软件的通病:规范程度不够好,质量参差不齐,一些插件在存档页面去连评论的数据,就很浪费资源了。
4Feed和图片独立
Feed和图片完全没有必要自己负担:
a、Feed可以使用FeedBurner(最近Google的动作应该会让河蟹的风险降到最低),也可以使用Feedsky;
b、图片可以使用Google的Picasa,如果实在觉得麻烦,在上传图片之前,切记裁剪、缩放一下图片,一般来说都可以压缩到100K以内(可以压缩掉90%的体积)
5可以考虑用Nginx代替Apache
我并不了解Nginx和Apache的内部原理,但我的直觉告诉我,Nginx的效率要高于Apache - 理由是,当我从Apache迁移到Nginx之后,一直没有开super-cache,速度居然也很不错。现在,Alexa排名前100的网站中有2个使用了Nginx(Nginx官方统计)
值得一提的是,换了Nginx之后,super-cache的rewrite规则不如htacces那么好配置,搜索“Nginx+Super+Cache”会看到很多说明,不再赘述。
本文作者:awflasher