其实我用的插件都算是蛮多了,达到了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 鲜果再次修改接口,这个功能已经不行了!下载也失效了!

zriver | 2008-01-24 10:18:21 | #
15个就算多啊?我也刚好装了15个。
不过我主要是想试试我的头像能你能显示。。。
支持 反对
自由天空 | 2008-01-24 10:59:34 | #
原理倒是这样的,不过对于用虚似空间的博客来说,可能会被主机限制。因为这样的缓存是占内存的,管理的不好会导致服务器资源紧张,所以一般主机会限制。原理与OSCache和Memchche一样。
支持 反对
梦印江南 | 2008-01-24 11:34:21 | #
说实话,代码我还是玩不转。。
支持 反对
seo | 2008-01-25 10:40:30 | #
不懂程序,我看我还是少用点插件吧
支持 反对
xaoma | 2008-01-26 00:06:22 | #
几天没有来,看了半天才看完!
学习一下
支持 反对
fvzone | 2008-01-28 16:51:36 | #
也,今天我得留下我的脚印…
学习啊学习…
支持 反对
吉吉 | 2008-01-30 21:36:46 | #
水煮大名久仰,最近开始订阅,慢慢学习。这篇太深奥,不懂。
想问一下,有没有插件可以让文章一半显示,一半需要密码才继续阅读的呢?
支持 反对
Denis | 2008-01-30 21:47:03 | #
没有!
支持 反对
adam | 2008-03-01 17:21:00 | #
暂时用不到 人气不足···
先收藏了
支持 反对
adam | 2008-03-06 15:31:25 | #
无奈服务器的mySQL总有问题 不知道这样的cache会不会有用(连不上SQL 但静态页可以访问)
支持 反对
adam | 2008-03-06 16:40:04 | #
一小时后 现在 貌似效果还是有的 网站速度明显快乐些 虽然不是生产静态页(我想要的结果)
支持 反对