品牌/运营/管理/IT综合咨询
IT/互联网+解决方案
业务及咨询:13919290690
售后支持:18693088690
info@radartek.com
support@radartek.com

WordPress 优化之启用WordPress自带缓存Object Cache

WordPress 的 Object Cache(对象缓存)是 WordPress 的默认缓存机制,它是将耗时查询或者运算结果存储到缓存文件中,这样的好处显而易见,就是数据库的查询次数和执行时间明显减少,不用重复获取数据,访客打开页面速度也会大大提升。与其他缓存插件相比这样的缓存更易操作。

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文件,在里面加上:

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

然后保存文件即可。接下来你要做的就是多刷新几次你的博客,看看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。