页面载入中...

简评 WordPress 缓存插件:Hyper Cache

由于流量太大,三表的博客打起了摆子,其实早些时候我就留意过他的博客,没有使用任何缓存手段还扛得住那么多人踩觉得有点不可思议,结果是没赶上摆子发作罢了。今天再去看的时候,他已经安装上了 Hyper Cache,于是我得赶紧了解一下,否则跟人讲起来连 Hyper Cache 都不知道,还好意思说自己玩几年 WordPress?

稍微介绍一下 Hyper Cache,从功能上来说,Hyper Cache 跟 WP Cache、WP Super Cachecos-html-cache 等插件一样都是 WordPress 的缓存插件,WordPress 本身动态生成页面的特性导致其性能一直为人诟病,表现为速度慢、服务器负载重等,于是大家想出一系列的办法来修正这个问题,我见过的思路有以下几种:

  1. 缓存数据库查询,减轻 SQL 查询负担
  2. 缓存页面,减轻 PHP 解释负担
  3. 生成真正的静态化页面,把 SQL 查询减少至 0,PHP 解释减少至 0 或接近 0

上面分得不一定严谨准确,我只是粗略划分一下(另外,本篇文章可能含有错误,发现并指正有奖)。

第一种思路的代表是 WP Cache,这是我用过最早的缓存插件,效果非常一般。我觉得这个思路本身就是矛盾的,缓存更新比较快的数据,打个比方说评论吧,缓存了可能会导致查询最新评论结果不准确,不缓存吧查询频率还比较高。貌似 WP Cache 有后续版本?不好意思没关注过。

第二种思路的代表是 WP Super Cache,不过我觉得这么说可能不太准确,它应该也结合了第一种思路,貌似大家对 WP Super Cache 评价还比较高,但是我的看法是:不过如此。

第三种思路的代表是 cos-html-cache,在看过 Hyper Cache 的源代码之后,我把它也归进这第三种思路中,但这二者又有差异。cos-html-cache 的机制是生成真正静态的 HTML 文件,所以这个插件也要求把 WordPress 的永久链接格式改为 .html 结尾,它的优势非常明显:缓存机制彻底绕过了 WordPress,完全没有 PHP 和 SQL 消耗。在发生第一次访问请求时,生成页面缓存,缓存生成之后,所有访问请求到的页面都是一个真正的 HTML 网页,显然优化程度已经达到了极限

与之相比,Hyper Cache 并没有完全脱离 WordPress,虽然它也会生成静态的页面(不是 HTML 网页,而是序列化后的二进制数据),但为了保证插件适用范围更广,Hyper Cache 仍然依赖于 WordPress 的插件机制,当有访问请求时,Hyper Cache 首先会检查是否生成了缓存,如果缓存存在,把二进制缓存数据反序列化并返回,否则生成缓存。(包括生成方式在内,Hyper Cache 更新缓存的方式跟 cos-html-cache 也无二致,都会在有新评论、有新日志产生的时候更新相应的部分缓存。)

由此可见,有人说“Hyper Cache 轻松打败 WP Super Cache”是有道理的,但与 cos-html-cache 的优化效果相比,还是存在一定的差距。不过 Hyper Cache 仍然称得上是一款优秀的 WordPress 缓存插件,良好的缓存性能、对永久链接格式没有苛刻的要求、支持 gzip 压缩另外还有易用的配置界面(实话说我只看过这个页面的源代码),都足以让 Hyper Cache 代替 WP Super Cache 成为非 geek WordPress 用户的选择。

27条留言. 发言 or Trackback

  • Aw Guo  20:10 Feb 25, 2009 

    1) Super Cache是生成静态页面的,只需要Apache或者Nginx的rewrite即可,效率很不错了。

    2) Hyper Cache 轻松打败 WP Super Cache ? 有测试报告么…

  • Andor  20:18 Feb 25, 2009 

    :em08: 完全看不懂~

  • 北极冰仔  20:24 Feb 25, 2009 

    @Aw Guo
    1) Super Cache 虽然也缓存了页面,但是跟 cos-html-cache 和 Hyper Cache 相比,“静态”的程度不高,是一种更加“动态”的静态,而 cos-html-cache 和 Hyper Cache 的静态程度要彻底地多,是丝毫没有折扣的静态。正是因为这一点,Super Cache 的效果比不上后两者。

    2) 没有测试报告,我仅是从理论上证明这一点。

    谢谢 aw 前来指教! :em17:

  • 北极冰仔  20:26 Feb 25, 2009 

    @Andor 你这是褒呢还是贬呢? :em25:

  • sansky  21:22 Feb 25, 2009 

    我喜欢cos-html-cache

  • Ksky  21:33 Feb 25, 2009 

    试试Hyper Cache~

  • 北极冰仔  21:34 Feb 25, 2009 

    @sansky Me too.

  • Jason Ng  21:49 Feb 25, 2009 

    之前我使用的是Hyper Cache,发现启用之后博客就不记录cookie了,也就是回访的留言者要再次输入个人信息。
    当换到Super Cache后,这个问题解决了。
    这是几个月之前的事,不保证现在Hyper Cache还出现一样的情况。不过Hyper Cache的插件文件似乎比Super Cache要少一些,不知这是否会提高运行效率?

  • 北极冰仔  22:15 Feb 25, 2009 

    @Jason Ng
    是的,这个现象正是因为彻底静态化导致的——因为 WordPress 验证 cookie 的代码是用 PHP 写的,静态化之后已经没有了 WordPress 的介入,所以 cookie 会失效。

    解决的办法就是使用 JavaScript 来验证 cookie,以及加入动态的功能——我的博客就是完全静态化的,“我的留言”、“订阅统计”还有 cookie 验证都是通过 JavaScript 完成的。

    同时这一点也可以证明 Super Cache 不是完全静态化的,它的静态化有所保留,所以效率高不到哪里去,甚至在某些情况下可能由于频繁建立缓存而起到反作用——这种情况我是遇到过的。

    Hyper Cache 效率比 Super Cache 高的主要原因是缓存机制上的优势,跟文件数量可能有一点关系,但我想应该不是主要原因。 :em17:

  • Andor  15:31 Feb 26, 2009 

    @冰仔:你猜是褒还是贬 :em26: 原来 twitter 那个头像是你啊,我以为是谁呢 :em12:

  • 北极冰仔  15:45 Feb 26, 2009 

    @Andor 哈哈,看来大家都对这个头像有兴趣啊。

  • bssn  23:37 Feb 26, 2009 

    只可惜cos-html只管post页面。其他的都给放行了。再搭配一个缓存就好了。

  • 北极冰仔  00:40 Feb 27, 2009 

    @bssn 啊,我觉得管 post 和 index 就足够了呀,其实自己给那些独立的 page 加上缓存也不难的。

  • Charles  16:26 Feb 27, 2009 

    我争取努力一下,把博客做到需要安装缓存插件的程度…… :em13:

  • Leeiio  17:49 Feb 27, 2009 

    因為使用了不少php判斷客戶端信息顯示的語句,注定了我不能用此類緩存插件。。前幾天剛把wp super cache撤銷了~

  • 北极冰仔  17:51 Feb 27, 2009 

    @Leeiio 呵呵有得必有失吧

  • Leeiio  23:26 Feb 27, 2009 

    呃,我想問下你的“我的留言”是如何實現的?

  • 北极冰仔  14:49 Feb 28, 2009 

    @Leeiio 根据 cookie 判断访问者有没有留过言,如果有,在数据库中查出最新的 10 条显示出来。

  • Aw Guo  19:53 Feb 28, 2009 

    我还是觉得super-cache是不打扰PHP脚本的。它只是让htaccess做了一下rewrite而已,我没有看出什么地方用到php的。你可以看看super-cache的htaccess文件。

  • 海妖的夜  19:32 Mar 01, 2009 

    super cache是apache转发过的生成静态html的机制,与cos-html-cache没有本质上的区别.
    相反的因为cos-html-cache不根据不同的博客进行缓存,会造成不支持mu的wordpress.局限了使用范围.
    个人认为生成html+apache的rewrite才是比较好的解决方案.
    super cache的问题是garbage的时间太短了,你可以选择改代码改的时间长一点,这样可以稍微提高效率.

  • 北极冰仔  22:00 Mar 01, 2009 
  • Drifter  17:00 Mar 04, 2009 

    嗯,暂时用不上静态缓存,学习一下~

  • shamas  09:56 Mar 25, 2009 

    才看到这篇文章,wp-super-cache自从升到新版后,居然在ie下就能访问了,不知是什么鸟原因,我现在去试下这个插件看能不能访问正常。还有我想了解下那个使用 JavaScript 来验证 cookie的方法,不知有没有相关的文章啊

  • chancat  01:44 May 22, 2009 

    @北极冰仔
    思路真清晰..

    我启用 这个插件了 但是始终 没在wp-cache里生成任何文件 = =! 怎么检查这个插件 启用运作了呢。

    还有 开启这个插件后GZIP将失效 后台的 开启GZIP 也没用。。
    插件设置界面 也没任何提示错误 我就是用不了 (看不到生成的文件)
    还有 看到很多 安装方法都不一样 。。。有个 这样说的 。
    安装方法

    1.上传插件(如果先前安装过其他缓存插件的,请先彻底卸载)

    2.把插件中的advanced-cache.php放到wp-content文件夹里。并把wp-content文件夹和advanced-cache.php的权限设为777

    3.别忘了给wp-config.php加上一句define(’WP_CACHE’, true);
    。。。。汗了 。帮我下吧

  • alpha2beta  20:11 Nov 13, 2009 

    Hyper Cache和MobilePress等Wordpress手机插件的兼容性有问题

  • folding chairs  10:26 Nov 23, 2009 

    hyper cache 我升级了两次,结果两次升级完之后整个插件消失,郁闷的,又要重新安装过插件

  • 花草茶  10:41 Jun 21, 2010 

    :em16:

留言 ↓

欢迎回来, (修改)

  • :em19:
  • :em01:
  • :em25:
  • :em09:
  • :em11:
  • :em00:
  • :em13:
  • :em08:
  • :em10:
  • :em03:
  • :em02:
  • :em05:
  • :em07:
  • :em16:
  • :em27:
  • :em14:
  • :em21:
  • :em20:
  • :em24:
  • :em18:
  • :em17:
  • :em06:
  • :em23:
  • :em12:
  • :em22:
  • :em15:
  • :em26:
  • :em04:

正在提交数据...

6 Pingbacks & Trackbacks