启用WordPress自带缓存Object Cache(推荐打开)

3月12日 · 2011年

昨晚折腾博客的时候,发现了一个好东西,经过本人的使用,效果很明显。推荐大家如果服务器允许,则打开此功能。该功能打开后将会明显减少数据库查询次数和执行时间。

Object Cache全名File-Based Object Caching。那么什么是Object Cache或对象缓存呢?它和一般生成静态HTML页面的缓存(比如WP Super Cache)有什么不同?一般的缓存是将服务器生成的完整HTML响应进行存档,将之保存为静态的文件保存在硬盘上以供下次调用,一般来说这样的机制都会给静态文件一个有效期,在特定时间或特定动作之后,当前缓存过期并重新生成。 Object Cache则是另一种形式的缓存。它只缓存那些服务器生成上面的响应过程中创建的“数据”或对象。举个例子来说,如果一个Blog的首页有一个列表,比如最新的5个文章,友情链接,指向最新5个评论的链接等等; 服务器可以“单独”地以原始数据格式(raw data format)缓存它们,所以在未来的调用请求中,这些内容可以被一个接一个地取回。 简单来说,一般的缓存是将生成的“结果”保存起来供下次相同请求时调用,而对象缓存是将生成过程中的零件们进行缓存,下次有相同请求时无须现找零件而是即时拼装所以也降低了服务器负载(特别是数据库请求次数)对象缓存比全内容HTML缓存要更灵活,因为它允许当缓存内容发生改变时,只使部分缓存生效。比如当一条新评论在你的博客上发表时,完全没必要更新最新文章列表。另外,它还可以更容易地从以往请求内容的缓存数据中拼凑出新的请求(比如博客“单文章”页可能也包含最新评论列表)。

Object Cache基于服务器的Memcache扩展,所以如果你想使用这种缓存机制,请先咨询下你的服务商是否在服务器上启用了它。如果服务器支持此扩展,则Object Cache就可以直接使用了。如果你那可怜的小主机不支持此扩展,那么很悲催,这么好的功能你是用不了了。

基本可以认为Object Cache是一个有条件的话一定必须肯定绝对要启用的东西。原本Object Cache是WordPress内建的,但由于种种原因,它在WordPress 2.5及以上版本中就取消了,或者说不再内建了。但是相关的API调用还在并且都能正常工作,所以我们要做的就是用一个小文件启用它。 据前辈们的测试,它和任何其他的缓存插件,不管是WP Super Cache还是DB Cache等等都能够和平相处,所以,既然无痛而且确实有效,让我们都启用它吧。

这个小程序全称File-Based Caching for WordPress,作者是Neosmart的Mahmoud H. Al-Qudsi。使用方法很简单,下载本页下方的PHP文件,然后上传到你的Wordpress的wp-content目录下,然后同样还在wp-content目录下新建一个名为cache的文件夹并确保文件夹可写(目录属性设置为755即可)。然后,修改你的wp-config.php文件,在里面加上:


// Enable the WordPress Object Cache:
define('ENABLE_CACHE', true);

然后保存文件即可。接下来你要做的就是多刷新几次你的博客,看看cache文件夹中是否多了些东西,那就是Object Cache的缓存文件了。另外,如果你留意你的数据库查询次数和时间的话会发现,这两个值都有非常明显的下降,这表明你的Object Cache已经正常工作了。 本站使用后,首页数据库查询次数由25~30次降低到5~10次,效果甚好。

注:显示数据库查询次数及执行时间的方法,请在你希望显示的地方加上如下代码:

< ?php echo get_num_queries(); ?> queries in < ?php timer_stop(1); ?> seconds.

具体显示效果请看本站侧边栏下方。

Object Cache对于降低数据库查询次数的效果可以说立竿见影,如果你没有做过其他方面的优化的话,单独使用这个应该能看到非常显著的查询数下降。如果搭配另一个数据库插件DB Cache,数据库查询次数还会进一步降低。不过对于一个初期访问量并不高的小博客,没必要使用插件来缓存。最后再次推荐大家在服务器支持的情况下都启用Object Cache。

点此下载缓存文件

23 条回应
验证码
输入运算符及数字使等式成立
{{comment.validate_num1}} = {{comment.validate_num2}}
点赞 确定
退出登录?
取消 确定
  1. 禅猫悟语2017-2-16 · 2:02

    你是说这个Object Cache 不能用了?

    • 猴猴2017-2-17 · 18:02

      现在有更好用的了。如果你是独立主机的话,可以使用fastcgi,效果更明显。

  2. 麦钛蛋2012-12-28 · 13:03

    已经失效了亲 现在有新的了

  3. 济南网站建设2011-12-26 · 19:47

    文章不错,
    留个足迹,支持一下。
    最好能回访一下。呵呵

    • 猴猴2011-12-27 · 8:40

      回访了,欢迎光临哦 😳

  4. Luckerme2011-10-3 · 19:04

    围观一下..

  5. Jessy2011-5-25 · 14:37

    启用了啊哈哈 :woshou :woshou

    • 猴猴2011-6-4 · 12:59

      :daxiao 启用了还是很有好处的哈

  6. lich_wang2011-3-20 · 16:19

    你的下载插件是是么啊,就是能显示下载数量那个效果

    • 猴猴2011-3-20 · 17:02

      Hacklog-DownloadManager,后台就可以直接搜索下载 :weixiao

  7. ThinkDeep2011-3-14 · 11:29

    悲剧,上传了之后,网页就打不开,看来是没戏了

    • 猴猴2011-3-14 · 13:04

      悲剧的小空间。。。 :liuhan

  8. 绿篱2011-3-13 · 12:19

    :cankui 啊。你的评论中加链接会自动出现摘要啊。

    • 猴猴2011-3-13 · 13:58

      好像是啊,这个我也没注意过 :cankui

  9. 绿篱2011-3-13 · 12:17

    猴猴,我的博客再出现错误了还要及时给我说哦!TKS。。。。
    还有。提醒你下。把那段检测代码放到sidebar.php中得到的结果不太准确哦。你可以看下我刚写的文章中给你的说明。
    http://love.jingfei.net/use-object-cache-to-fix-error.html

    • 猴猴2011-3-13 · 13:34

      谢谢指正啊。我看了已经,不过放在sidebar比放在底部看着舒服些 :cankui 。实际缓存后的查询数量首页在7~14之间。内容页在12~18之间。比不启用缓存的情况下节约了一半的查询数量。还是很可观的哦~ :daxiao 一定要启用哦~ :keai

      • 绿篱2011-3-13 · 13:36

        :daxiao 是啊!情侣博客嘛!美观第一位滴~~。。。 :daxiao 我也启用了。

  10. lich_wang2011-3-13 · 11:08

    咋样才知道服务器支持呢

    • 绿篱2011-3-13 · 11:46

      询问空间商或自己测试一下就知道行不行了。!

    • 猴猴2011-3-13 · 13:36

      对呀,咨询空间商吧~或者自己试试,没反应就是不支持喽。不过一般来说收费主机都应该是支持的。 :weixiao

  11. 绿篱2011-3-12 · 23:38

    :keai 我是能少X件就少X件。不过对我现在一天也就100ip徘徊的人来说影响不是很大 :cankui

    • 猴猴2011-3-13 · 9:47

      这个不能算插件。只是利用了WP自带的缓存系统。如服务器支持还是强烈推荐打开。 :nuli