博客 » WordPress » 使用 WordPress 对象缓存

使用 WordPress 对象缓存

其实我用的插件都算是蛮多了,达到了15个(当然也有些疯子,装了30多个插件,然后怪 WordPress 太慢。)。但是最近经过我的优化之外,其实博客的速度也不算太慢了,这里其中我就用到就是 WordPress 缓存机制,以前我经常用的是 WP-Cron 的定时更新的功能进行缓存。今天给大家介绍另外一种缓存机制:WordPress Object Cache。以下信息节选翻译自:Using the WordPress Object Cache

WordPress Object Cache 的目的是提供一个耗时查询或者运算结果存储到一个缓存文件的方法。这样就可以让我们不用老是重复到数据库中或者其他外部网站获取不变的数据。但是需要提出的是,一些服务器环境在使用缓存的时候会有些问题,所以这需要你去监控你的服务器来决定使用缓存能否对你的站点有益。

使用 WordPress 对象缓存技术其实是非常简单的,使用 wp_cache_set() 把数据写到缓存中,然后通过 wp_cache_get() 到缓存中读取数据。

在开始之前,有些东西你需要去检测一下,因为在默认情况下对象缓存是没有启用的。启动它,你需要编辑 wp-config.php 文件,在 WP_LANG 后面添加如下几行:

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

还有你需要检查下没有定义 DISABLE_CACHE 这个变量,另外你还需要检查下你的主机中有 wp-content/cache 这个子目录,并且是可写的。

首先,我先解释下如何把数据放到缓存中。把缓存都想象成一系列的容器,每个装着一些数据包。你可以给这些容器和在容器里面的包命名,这样你等下就知道如何去获取它们了。在我的例子中,我将把握的容器命名为 mycache,把数据包命名为 mysettings

这里是如何把数据写入缓存的例子:

// Whenever we need to rewrite the cache data:
// This could be calling a database, webservice, etc.
$mydata = my_complicated_data_query();
$myexpire = 60 * 60 * 24; // Cache data for one day (86400 seconds)
wp_cache_set('mysettings', $mydata, 'mycache', $myexpire);

现在当你要避免复杂的数据库查询,首先检查下是否已经有了缓存,如果你要的信息没有再缓存中,或者已经过期了。wp_cache_get() 会返回否,如果这样,你就要去数据库中重新获取这些信息。否则就返回再缓存中的信息。

// First of all, before you try to access the user data, check
// the cache.
$mydata = wp_cache_get('mysettings', 'mycache');

if (false === $mydata) {
	// The cache data doesn't exist or it's expired. Do whatever we need to populate $mydata from the database normally... 

	$mydata = my_complicated_data_query();

	// Since we know that the cache isn't up to date, we should write this fresh information to it now, so that we can avoid the query next time.
	$myexpire = 60 * 60 * 24; // Cache data for one day (86400 seconds)
	wp_cache_set('mysettings', $mydata, 'mycache', $myexpire);
}

当然了,数据缓存多长时间和使用哪个 API action hooks 去触发更新缓存,这都取决于你。

我根据 WordPress 这个缓存机制作了一个鲜果 Digg Top 10 得东东。可以到这里看看。当然这个东东是很脆弱的,只要鲜果修改了一些东东,就不能用了。个人作觉得这个东西应该是鲜果自己来做成 Widget 最好了。anyway,我还是放出来吧!如果你有兴趣就去下载吧,就当作学习这个 WordPress 对象缓存机制!使用方法,使用一下页面模板函数 xianguo_digg_top_10(),后台有个设置,选取最近多少天的文章来显示到这个列表来,不要把文章选取太多了,不然会出现错误。

Update 2008-01-25 鲜果再次修改接口,这个功能已经不行了!下载也失效了!

标签:

23 条评论 添加你的评论 →

发表评论

你必须 登陆 之后才能留言。你可以使用以下方式快速登陆我爱水煮鱼:

使用新浪微博登陆 使用豆瓣登陆

你也可选择直接在本站 注册

本月最热日志

历史最热日志

最多评论日志

整站最新日志