听说最近很多人对WordPress的缓存插件感兴趣,那么今天开始说说这些名号里有“缓存”的插件。实际上除了这些缓存外,还有很多优化插件都有缓存机制,比如上次说的Autoptimize。缓存插件的用途一般来说有二,一是降低服务器的负载,不管是CPU占用率还是数据库查询次数,二是提高访客访问站点的速度。对于WordPress这样的几乎没什么是静态的东西来说,使用一种或多种缓存插件可能是最简单的提升访问速度和降低负载的方法。
我们经常听到或用到的缓存插件有二,WP Super Cache和Hyper Cache,它们的功能都是将你的动态页面静态化,将经常调用的页面以静态的html文件展示,而不是来一个访客“动态”生成一次页面。这种机制可以极大地降低服务器负载,特别是对于访问量很大的站点来说。这种缓存方式称之为“全内容HTML缓存”。但是这种缓存方式有一个小问题,对于页面上“必须”动态生成或实时联络的内容而言(比如侧边栏的某些挂件),静态页面意味着它们的功能失效。由此带来的问题是有些内容无法实时显示,广告无法显示等等。那有没有比较温柔的“无痛”缓存既能缓存一些内容降低负载,又能够和这些插件和平共处没准还能让我们赚点小钱呢?Object Cache是个不错的选择,当然如果你喜欢插件形式的,BatCache也可以。
把它俩放到一起说的原因是这两个小东西都基于服务器的Memcache扩展,所以如果你想使用这种缓存机制,先咨询下你的服务商是否在服务器上启用了它。有了Memcache这个前提,Object Cache那就是直接就用啊。
什么是Object Cache或对象缓存?它和一般生成静态HTML页面的缓存(比如WP Super Cache或Hyper Cache)有什么不同?
一般的缓存是将服务器生成的完整HTML响应进行存档,将之保存为静态的文件保存在硬盘上以供下次调用,一般来说这样的机制都会给静态文件一个有效期,在特定时间或特定动作之后,当前缓存过期并重新生成。
Object Cache则是另一种形式的缓存。它只缓存那些服务器生成上面的响应过程中创建的“数据”或对象。举个例子来说,如果一个Blog的首页有一个列表,比如最新的5个文章,友情链接,指向最新5个评论的链接等等; 服务器可以“单独”地以原始数据格式(raw data format)缓存它们,所以在未来的调用请求中,这些内容可以被一个接一个地取回。
简单来说,一般的缓存是将生成的“结果”保存起来供下次相同请求时调用,而对象缓存是将生成过程中的零件们进行缓存,下次有相同请求时无须现找零件而是即时拼装,所以也降低了服务器负载(特别是数据库请求次数)。
对象缓存比全内容HTML缓存要更灵活,因为它允许当缓存内容发生改变时,只使部分缓存时效。比如当一条新评论在你的博客上发表时,完全没必要更新最新文章列表。另外,它还可以更容易地从以往请求内容的缓存数据中拼凑出新的请求,(比如,博客“单文章”页可能也包含最新评论列表)。
所以你基本可以认为Object Cache是一个有条件的话一定必须肯定绝对要启用的东西,尽管它在WordPress 2.5及以上版本中没有默认开启,需要我们自己往里面添加点内容启用它。据我自己的测试,它和任何其他的缓存插件,不管是Hyper Cache还是WP Super Cache还是DB Cache或是Autoptimize都能够和平相处,所以,既然无痛而且确实有效,让我们都启用它吧。
原本Object Cache是WordPress内建的一个东西,但是由于种种原因在WP 2.5及以后版本中就取消了,或者说不再内建了。但是相关的API调用还在并且都能正常工作,所以我们要做的就是用一个小文件启用它。
这个小程序全称File-Based Caching for WordPress,作者是Neosmart的Mahmoud H. Al-Qudsi,文件请访问这个页面下载。WOPUS之前的一篇文章也对Object Cache做过简单的介绍。
使用方法很简单,上传object-cache.php文件到你的Wordpress的\wp-content\目录下(不是Plugins目录啊~),然后同样还在wp-content\目录下新建一个名为cache的文件夹并确保文件夹可写。然后,修改你的wp-config.php文件,在define ('WPLANG', 'zh_CN'); 这行后加上:
// Enable the WordPress Object Cache:
define(ENABLE_CACHE, true);
然后保存文件即可。
接下来你要做的就是多刷新几次你的博客,看看cache文件夹中是否多了些东西,那就是Object Cache的缓存文件了。另外,如果你留意你的数据库查询次数和时间的话会发现,这两个值都有非常明显的下降,这表明你的Object Cache已经正常工作了。
BatCache和Object Cache类似,同样基于Memcache扩展,但是它是以插件的形式存在的,适用于那些由于各种原因无法使用WP Super Cache等常用缓存插件的用户,大家可以到Wordpress的BatCache插件页查看。我个人建议还是用上面的Object Cache,简单又省事。
Object Cache对于降低数据库查询次数的效果可以说立竿见影,如果你没有做过其他方面的优化的话,单独使用这个应该能看到非常显著的查询数下降。如果搭配另一个数据库插件DB Cache,数据库查询次数还会进一步降低。推荐大家在服务器支持的情况下都启用Object Cache。它几乎和所有的插件都能够和平共处,所以绝对是居家旅行常备之物。
标签: WordPress优化插件 , wordpress缓存插件
编辑: Donald
请问wopusIDC支持吗?
支持。
我顶!~~明天弄一个
这类插件我都用过了,虽然数据库查询次数减少了,但是读取时间却增加了.
或许会节省内存,不过凭直觉没啥效果.
尤其是WP-CHCHE开了以后,对POSTVIEWS的计数会有影响.
Object Cache 有一个Bug WordPress 2.8+ 启用新插件会显示插件头部错误 但是过个十多分钟以后就OK了
嗯,那个问题不光在WP2.8存在,至少我用2.7的时候也有...虽然不提示头部错误,不过还是会找不到插件,哈哈。
不错。。。有空了试试哎,以前用super cache 现在也停用了呢