正在加载...

老罗被折腾得够惨,王小峰老师的WordPress博客又开始打起了摆子。同学们都觉得心里拔凉拔凉的,有些人问我,是不是WordPress无法用于高访问量的博客建设。我认为不然。今天分享下我的经验和看法,欢迎讨论。

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库了;插件还有一个问题也是免费开源软件的通病:规范程度不够好,质量参差不齐,一些插件在存档页面去连评论的数据,就很浪费资源了。
  4. Feed和图片独立
    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”会看到很多说明,不再赘述。
还没找到您要的东西?Google试试看吧,
Google更注重原创、时效性好的文章:


本文相关评论: 才 64 条评论
  1. atomicink 2009-02-23 05:02:59

    第一点,“后者”应该是“前者”?

  2. Joe wulf 2009-02-23 05:03:03

    我对服务端的原理知之甚少,但就我使用LAMP和WAMP的经验来看,后者在性能、稳定性上都占有几大优势。 — 使用wamp?

    • aw 2009-02-23 05:14:36

      哦,笔误,多谢,已经修正了!

      我之前一直使用WAMP(Windows Apache MySQL PHP)

      • Showfom 2009-02-25 09:00:36

        哦了,我打算把lanqiu.com建成一个web2.0的网站,想开个多人博客,服务器是windows的,难道IIS很占用资源哦?

        • aw 2009-02-25 11:27:22

          当然建议使用LA(Nginx)MP了,除非你是Windows (IIS)的高手,否则只能堆服务器了。

          • Showfom 2009-02-25 04:10:05

            万网的linux服务器不能自己配置,妈的,rewrite都不能。。。只能用iis了,我找了个dll,WordPress的rewrite没问题了,看看,http://lanqiu.com/ 招聘人手中

            (评论已经达到最大深度!)
          • aw 2009-02-25 04:34:07

            我靠,您为什么就一定要用万网呢?为了表现您不低俗?。。。。

            (评论已经达到最大深度!)
          • Showfom 2009-02-27 06:42:20

            我靠,我那合作伙伴认定万网的好嘛。。再说了,万网的速度确实一流,这个是千真万确的啦。

            (评论已经达到最大深度!)
          • Showfom 2009-02-27 06:43:24

            煎蛋就用Nginx 嘿嘿。

            (评论已经达到最大深度!)
          • Freelancer 2009-04-15 12:51:44

            万网这么lj居然也有人用,嘿嘿

            (评论已经达到最大深度!)
  3. 半醒 2009-02-23 05:05:56

    wp-super-cache 好像有些虚拟空间上不太好用。
    不过对于LAMP还是WAMP,相信如果说是使用虚拟空间 大部分应该都是LAMP

  4. Fdream 2009-02-23 05:20:59

    nginx比apache强太多了

  5. 阿企 2009-02-23 05:33:30

    这个承受量是不是由服务器性能决定的,如果服务器可以承担得起,那wordpress应该没问题吧

    • aw 2009-02-23 05:53:34

      再好的服务器如果不好好用照样不行。看看政府网站的服务器吧,哈哈:)

  6. alife 2009-02-23 06:04:54

    搜索” Nginx 0.7.x PHP 5.2.8(FastCGI)搭建胜过Apache十倍的Web服务器”

  7. 胡戈戈 2009-02-23 06:41:48

    Bluehost是我用过的感觉最强大的主机,可以承受一天几万IP来袭

  8. 巫山霏云 2009-02-23 07:50:38

    nginx的确比apache的效率要好多了….不过wp还是有很多可以优化的

  9. 萧渔 2009-02-23 10:03:12

    nginx确实更快,只是安装配置时要麻烦一些,另请教一下,这里留言的支持与反对功能使用的是什么插件?

    • aw 2009-02-23 10:07:22

      自己写的插件,不过用到一些版权含糊的第三方的代码,稍候重构后会发布。

  10. shixinyu 2009-02-23 10:48:18

    爱枣报用的Super-cache看起来导致DH VPS的内存彪高的问题了,还有一款Cache插件可以考虑一下,Hyper-Cache:
    http://www.satollo.com/english/wordpress/hyper-cache

  11. 老时 2009-02-24 08:17:12

    最近没怎么整博客

  12. aisinvon 2009-02-24 08:20:41

    其实挺想用wp的,可是我没钱,害怕买个差的主机负担不起wp的访问

  13. 猫粮 2009-02-24 11:18:07

    我用的是cos-html-cache

  14. 2009-02-24 01:48:43

    除了图片使用第三方服务器外,其他基本没用,访问量大的唯一办法是增加服务器,其他仅是治标.现在人多,是一万,那十万呢?百万呢?

    • aw 2009-02-24 01:52:15

      恕我直言,我只见过中央电视台的项目用堆服务器来维系的:)

    • 19 2009-02-24 03:07:26

      而且对于数据量大的系统一般都是用集群之类的方法来达到负载均衡的,你提到的这些只适合个人BLOG

  15. ideacm 2009-02-24 02:49:28

    aw,你给评论添加的digg能不能把支持和反对换个位置,一般都习惯从左到右,先支持后反对。在cnbeta都是这么玩的。
    在你这里好几次要点支持的都点成反对了。

  16. ideacm 2009-02-24 02:53:04

    feed用feedsky,picture用Google picasa(http://picasaweb.google.com),然后再用一个辅助插件:Picasa图片外链助手。

  17. 19 2009-02-24 03:00:31

    完全静态化以后根本就没有程序去获取浏览器的Request信息,你说的用JS来实现是用AJAX的方法再去执行某些操作么?如果是这样那在没有静态化的时候如何判断是否要执行这些静态后的操作也是个问题。

    你后面提到的“自己有一套jQuery的库,就不必再用插件自带的jQuery”我觉得对于插件的编写者来说都应该会在引入jQuery这类共有库的时候调用wp_print_scripts(‘jquery’);这个函数,当然我们自己在引入的时候也应该调用这个函数来避免重复加载。

    • aw 2009-02-24 10:17:44

      调用wp_print_scripts有一个问题是,无法引用Google CDN的jQuery,而且位置并不好控制。对于流量很大的网站,并不一定要在head标签内引入jQuery,可以放到“Loading”之后再引入。这样用户的体验会更好:用户会在极短时间内看到loading

  18. motou 2009-02-24 06:56:44

    LightTPD (www.lighttpd.net) 也是一款轻量级的服务器软件,据说比 LAMP 还快,有没有人使用过?

  19. 许三品 2009-02-24 09:30:31

    学习了,这个经验非常值得我们去借鉴

  20. asdf 2009-02-25 12:02:17

    想说一句 老罗的事 是技术层面的吗? 都是中国人装什么外宾

    • aw 2009-02-25 12:07:34

      我他妈啥时候说老罗的事儿是技术层面了,我说的是王三表。。。

  21. ShiningRay 2009-02-26 11:02:32

    我建议在nginx后面加apache,由nginx直接服务静态温江,apache可以适当配置,少开一些模块

    php fastcgi要打个fpm补丁

  22. wonosre 2009-02-28 06:07:45

    目前来讲
    个人觉得图片是最拖速度的

  23. wonsore 2009-03-01 11:26:24

    feedburener的那个,用自己域名,我始终没搞定。
    放弃了,反正订阅到人才100多。

  24. 神飞 2009-03-05 05:43:24

    我曾尝试过使用super cache之类的插件,但是感觉一直不是很好,就卸了……

  25. 地图查询 2009-03-09 10:21:53

    Linux的服务器跑得比Windows顺畅,但不是入门级的人玩的

    • blacktulip 2009-03-18 03:51:54

      谁说的,又不用你自己动手去装lamp,还不都是一样的

  26. meihuakai 2009-03-11 11:40:35

    我的是Linux的,感觉不错!

  27. shamas 2009-03-22 06:23:30

    为什么当这个版本升到0.91后就不能用了,现在返回以前的版本也是不能用,一启用在IE下就打不开,FF下确是正常的,不知是哪里出了问题题

  28. xiaoga 2009-04-22 03:52:37

    Nginx 听说会快一点, 不知道到底快多少!

    来看看每天最新的折扣信息吧!
    折扣帮

  29. 随影 2009-05-15 09:39:34

    呵呵 如果能好你做友链,可能也不失为提高流量的方法之一吧

  30. 视觉吧 2009-07-31 11:43:33

    学习啦!!!

  31. 搜问客 2009-10-16 01:11:28

    很喜欢这篇文章,写得不错。

  32. arp 2009-12-31 01:38:45

    支持吖。。

  33. cf 2010-01-11 10:53:58

    上了一万IP就满足了。

  34. tong 2010-01-15 05:02:13

    还没有达到这个程度。还不需要考虑这么多。

  35. 博百优 2010-05-08 03:29:00

    昨天写了关于wordpress插件,深受好多人的亲睐!

  36. 杭州股票开户 2010-06-02 10:15:19

    楼主高手啊~~~我也在用wordpress要多学习了

  37. 十字绣成品 2010-11-03 07:07:51

    楼主是才子

  38. 爱新奇 - 人人爱新奇 - 爱新鲜设计 爱奇特创意 2010-12-29 08:21:31

    如果已经有了jquery 就可以去年插件中调用的wp_print_scripts了吧

  39. 老宋 2011-01-16 01:21:48

    呵呵 学习了

  40. 橙色多天网 2011-02-22 07:12:50

    前来学习了

  41. ICIY博客 2011-04-26 12:46:25

    学习。。。。

  42. 噪音网 2011-07-01 11:21:12

    恩,楼主说的很对,很好的文章!

  43. 北京心理医生 2012-09-16 05:23:01

    写的很好。

  44. 团长 2013-01-22 12:27:34

    I blog frequently and I truly appreciate your content. The article has truly peaked my interest. I am going to book mark your website and keep checking for new information about once per week.

  45. Wargame 2014-03-16 02:01:53

    我用的方法略复杂了,包括验证码,超连接限制,关键词屏蔽,拒绝无referer来源的Spam机器人垃圾评论,IP地址拉黑……

  46. Trinea 2016-01-13 03:48:15

    也分享下我的经验,Wordpress 前后端全面优化:http://www.trinea.cn/plan-summary/wordpress-optimization/

[支持Ctrl+Enter]为了我们大家和家人的安全,留言请慎重!
声明:
1、本站仅与见过面的个人博客交换链接,见此文
2、留言时的头像是Gravatar提供的服务。如果您有兴趣并且有闲暇时间,可以看看这里的介绍