WordPress缓存插件介绍

今天有在下午2点到3点访问可能吧的朋友可能会发现,可能吧被管理员挂起了。一般情况下我相信大家都会认为和低俗等原因有关。

值得高兴的是,这次博客被挂起事件与低俗无关,这是一个高俗的博客。真正的原因是博客的数据库查询量严重超标。

当你的Wordpress博客流量过高,请务必考虑安装缓存插件。

如上次所说,我很早就使用了Super Cache,想不到它竟然也扛不住了,于是我就尝试了Hyper Cache和Cos-html-cache。

为什么要使用缓存插件?

Wordpress是最受欢迎的独立博客系统,这点是毋容置疑的。但当一个博客数据请求量高于空间的限制时,你就需要一个缓存插件来减少对数据库的查询。

不使用缓存插件但流量有很大会有什么后果?你可以尝试看看王小峰的博客,直到我写这篇文章的时刻(2009年2月26日,20:57),他的博客还是无法访问。

造成这个后果的原因可能是多方面的,但有2个可能是致命伤:

1、使用IIS+PHP,而不是更适合wordpress的LAMP(Linux+Apache+Mysql+PHP)主机。

2、他没有使用缓存插件

 

假设他用了缓存插件,可能就不会有这种事发生。

常用缓存插件介绍

目前我使用过的缓存插件有3个,Super Cache,Hyper Cache,Cos-html-cache。最终我在江东北极冰仔Paveo的帮助下选择了Cos-html-cache.

Cos-html-cache

这是首推的缓存插件,由江东开发。根据目前的观察,这个插件能极其有效地节省数据库查询量,做到完完全全的静态化。

然而,有得必失,你的文章URL必须伪静态为html或htm结尾,因为cos-html-cache确实生成了静态html文件。

具体使用方法:

(1)下载cos-html-cache插件,上传到plugins目录。

(2)在根目录下建立index.bak文件夹,权限为0666.

(3)在Wordpress的设置后台里将永久链接改成“/post/%postname%.html”或"/article/%post_id%.html"或其它。

 

其中"post"和"article"是自定义的,因为静态化的文件必须存放到一个目录。末尾的.html或.htm是必须的。

 

(4)启用cos-html-cache插件。

 

优势:

(1)所有文章和首页都被绝对静态化了,只有当文章被修改(文章内容修改、删除、留言)缓存才被重新生成,很大程度上减少了数据库的负担。

(2)支持Cookie验证(WP不是默认支持么?后面你会知道为什么我特意提到这一点)

 

劣势:

(1)博客文章永久链接必须是伪静态的。如果你博客之前的URL不是以.html或.htm结尾的,除非你用重定向,否则你将无法使用cos-html-cache。对于一个已经有比较长历史的博客,改动URL不是一件容易的事。

(2)不即时刷新。出发缓存重新建立的动作只是文章修改或主题变动,插件的动作不会导致缓存被重新生成。

但你真的需要那么多花哨的插件吗?

 

 

Super Cache

可能吧之前使用的就是super cache,直到下午负荷过重。

要使用这个插件,需要修改wp-config.php和.htaccess文件。具体可以参考官方说明

优势:

(1)无需修改博客永久链接。

(2)支持Cookie验证

(3)支持Gzip(即便Wordpress在wp2.5就取消了gzip选项)

 

劣势:

(1)依然需要查询数据库。相对cos-html-cache来说,super cache依旧需要对数据库进行查询。

update:这个结论可能是错误的。

(2)Gzip有时出错

 

 

Hyper Cache

这是我使用了2小时然后放弃的一个缓存插件。根据北极冰仔的介绍,它的思想和Cos-html-cache是一样的,但是考虑到永久链接的问题,它并没有完全绕过wordpress实现静态化。

相比之下,我认为它比Super Cache更为优秀,安装要求没有Super cache那么苛刻,而且对Gzip的支持似乎更好一些。

如果你不想将永久链接更改为.html结尾,可以考虑Hyper Cache。

但是,Hyper Cache有个不好的地方,将在第三点讨论。

 

常见问题

所谓的常见问题,其实是我遇到的两个可能比较普遍的问题而已。

Cos-html-cache记录的昵称空格变加号

使用chc的朋友可能会发现,第二次留言时,昵称里的空格会变成“+”号,如图所示:

twitter上请教了cosbeta,得到了解决方案,将“+”替换为“ ”。具体方法如下:

打开插件文件夹里的common.js.php,将第33行替换为:

setovalue('author',readCosBetaCookie(author_cookie).replace('+',' ' ) );

 

 

Hyper Cache无法实现cookie验证

之前我在阿禅日记试用了Hyper Cache,发现访客的cookie不会被记录,每次留言都要重新输入昵称等相关信息。这是缓存造成的。

解决方法是用js来实现cookie的验证,具体方法请移步WordPress 完全静态化后的 cookie 验证

 

 

 

总结

 

这次博客被挂起到使用3款缓存插件的经过,我得到了下面的结论:

 

 

1、博客被挂起不一定因为和谐,但因为和谐博客必定会被挂起

2、Wordpress一定要使用缓存插件

3、缓存插件首选cos-html-cache,然后是Hyper Cache

4、Google Analytics的数据统计可能非常不可靠(不展开讨论)

5、如果有一天你发现可能吧打死也不能访问,请留意我在twitter上的消息,我的twitter:jason5ng32.

 

 

 

57 条评论

  1. 2009 年 2 月 26 日 下午 10:38

    先来给你纠正个错误:王小峰的博客不是 WAMP,他是在 IIS 上跑 PHP。

  2. 2009 年 2 月 26 日 下午 10:40

    板凳!

  3. 2009 年 2 月 26 日 下午 10:43

    看来看去,技术类博客里面就数我文采最差了-_- 哭啊

  4. aw
    2009 年 2 月 26 日 下午 10:45

    这篇文章是Twitter的PR贴,哈哈哈哈哈哈哈哈哈

    恩,恭喜您的blog终于有down time了,这是荣誉啊~~

  5. 2009 年 2 月 26 日 下午 10:47

    我一直用伪静态很有先见之明啊。

  6. 2009 年 2 月 26 日 下午 10:47

    我觉得技术类的人就是和可能吧这种1 2 3 4的写作方式,不需要花哨的语言,写的人容易,看得人轻松(因为看的人也多半是工科男)

  7. 2009 年 2 月 26 日 下午 11:50

    不知道wp到什么版本才能大幅提升程序效率的问题

    • 2009 年 6 月 25 日 下午 12:11

      WP 3.8 的时候会自己弄个缓存就好了……

      我倒在想,wp什么时候缓存能做得像DZ一样出色就……

  8. 2009 年 2 月 27 日 上午 12:41

    我还以为是你的网站被和谐了,我去月光博客和keso抱怨去了,这下毁了我的一世英名啊。老伍,你是不是该考虑精神赔偿呢?哇哈哈哈

  9. 2009 年 2 月 27 日 上午 12:45

    如果用了的话,会影响速度吗?

  10. 蕭打油
    2009 年 2 月 27 日 上午 12:45

    值得參考,不過以後或許果然用得上。

  11. 2009 年 2 月 27 日 上午 12:47

    学习,受用,谢谢!
    还好晚上没有起来了,要不看不到了。

  12. cameos
    2009 年 2 月 27 日 上午 2:42

    > 博客被挂起不一定因为和谐,但因为和谐博客必定会被挂起

    精辟

  13. 2009 年 2 月 27 日 上午 9:45

    到现在还没静态化呢,费事~

  14. 2009 年 2 月 27 日 上午 11:15

    流量小也是福氣啊..

  15. 2009 年 2 月 27 日 下午 12:28

    不知什么时候,我也会扛不住!我现在用是super cache

  16. 2009 年 2 月 27 日 下午 1:22

    顶一下。看了。

  17. 2009 年 2 月 27 日 下午 2:17

    了解一下,。。

  18. fefe
    2009 年 2 月 27 日 下午 3:15

    我也在用cos-html-cache,Jason,你是否知道它是否影响 设置了密码的日志,我用了之后密码日志失效,不知道有关系没有。

  19. 2009 年 2 月 27 日 下午 6:40

    可能吧的访问量有1W左右了吧,嘿嘿。

    我的国外的博客,每天也就1000+ IP,还是吃得消,嘿嘿。

    • 2009 年 2 月 28 日 下午 4:31

      算上插件所耗用的资源,WP一般3000IP就挂了,其实虚拟主机很脆弱,很容易就被弄挂。

      wp就是独立主机,也很容易被攻击到死机。

      建议kenengba转移到wordpress.com的vip,把方便留给自己,把麻烦留给matt

  20. 2009 年 2 月 28 日 上午 10:18

    我用baidu空间………………

  21. 2009 年 2 月 28 日 上午 11:51

    原来如此~~
    我也用用去·

  22. edwin186
    2009 年 2 月 28 日 下午 8:00

    飘一下

  23. edwin186
    2009 年 2 月 28 日 下午 8:01

    我tm再飘一下

  24. 2009 年 3 月 1 日 下午 1:47

    完全静态的插件?厉害,不过如果广告位变动会不会需要重新生成所有的页面?

    • 2009 年 3 月 1 日 下午 2:06

      没试过,不过我习惯在做出非文章改动后删除所有缓存。

  25. 2009 年 5 月 3 日 下午 5:48

    还是决定用Hyper Cache了

  26. 2009 年 6 月 9 日 下午 3:32

    明白!谢谢!

  27. kira
    2009 年 6 月 11 日 上午 9:23

    正需要考虑缓存

  28. 2009 年 7 月 25 日 下午 10:18

    暂时还用不上。

  29. 2009 年 7 月 26 日 上午 10:23

    无法显示浏览人数,这个能有解决办法最好了!

  30. 2009 年 7 月 28 日 下午 4:00

    不知老大用过DB Cache没有,据说比Super Cache好,但是不知怎么测试。

  31. land
    2009 年 8 月 2 日 上午 8:38

    为什么这么极力推荐cos-html-cache,而且贵站(可能吧)用了一段时间后又改用wp-super-cache呢?能不能给大家说明一下原因,以免走许多弯路。谢谢!

  32. 2009 年 10 月 10 日 下午 8:28

    大哥,你现在用的好像是wp-super-cache,这怎么回事啊

  33. 呦吼
    2010 年 1 月 14 日 上午 7:00

    适当方式

  34. 2010 年 3 月 9 日 下午 4:05

    博主再介绍一下DB CACHE

  35. 2012 年 2 月 9 日 下午 12:36

    插件很好用,但启用wptouch这个手机插件后,用手机访问就不能显示手机版的了,请问这个有没有方法解决啊?

  36. 2012 年 2 月 9 日 下午 12:39

    cos-html-cache插件很好用,但启用wptouch这个手机插件后,用手机访问就不能显示手机版的了,请问这个有没有方法解决啊?

发表评论

电子邮件地址不会被公开。 必填项已用*标注