RainDesign mStand 全铝苹果笔记本支架

WordPress 对象缓存(Object Cache)详细介绍和使用

WordPress 对象缓存简介和服务器设置

WordPress Object Cache(WordPress 对象缓存)是 WordPress 的默认缓存机制,它的主要功能是把负责查询或者运算的结果按照 Key-Value 这样的方式(WordPress 还支持按照 Group 来划分和避免缓存的内容冲突)存储到对象里面,下次进行同样操作的时候,可以让直接从这个对象中取出数据,不用重复到数据库中或者其他外部网站获取数据。

WordPress Object Cache 和服务器设置关系很大,如果系统支持内存缓存,则这个对象是直接存入内存,以后在未过期之前都是直接从内存中读取的,这样效率和速度都非常快的。如果服务器不支持内存缓存的话,则只能保证在当前页面下同样的查询或者操作不再重复从数据库中读取了。

WordPress 对象缓存的函数

使用 WordPress 对象缓存技术其实是非常简单的:

  1. 使用 wp_cache_set() 把数据写到缓存中。
  2. 使用 wp_cache_get() 到缓存中读取数据。
  3. 使用 wp_cache_delete() 删除缓存。

这些函数会涉及到的四个参数:

  • $key: 对象的 key。
  • $data: 要存的值。
  • $group: 分组,可选参数,用来把缓存对象就行分组。
  • $expire: 过期时间,可选参数,如果是默认缓存,这个函数没用,如果是内存缓存,是设置缓存的时间,单位是秒,默认为0(0的意思就是永远,不会自动过期)。

使用 WordPress 对象缓存

下面以我即将更新 WordPress 相关日志插件为例,讲讲如何使用 WordPress 对象缓存:

我们知道 WordPress 相关日志插件是通过 tag 和分类来获取相关日志,相同的 tag 和分类越多,相关性越强,这样就需要进行多个表联合查询来获取相关日志,这样效率其实是比较慢的。但是一个日志它的相关日志一段时间内是不会变动的,所以我们就可以使用 WordPress 对象缓存对相关日志进行加速。

下面是把把相关日志的数据写入缓存的例子,使用当前 post ID 作为 key,’related_post’ 作为 group,缓存时间为一个小时,即 3600 秒。


global $post;
$related_posts_data = wp_get_related_posts();
wp_cache_set($post->ID,$related_posts_data,'related_posts',3600);

上面只是把数据存到缓存对象中,我们在显示相关日志的时候,就要去调用这个对象缓存来使用,首先检查下是否已经有了缓存,如果你要的信息没有在缓存中,或者已经过期了。wp_cache_get() 会返回 false,如果这样,你就要去数据库中重新获取这些信息。否则就返回在缓存中的信息。


global $post;
$related_posts_data = wp_cache_get($post->ID,'related_posts');
if(false === $related_posts_data){
	$related_posts_data = wp_get_related_posts();
	wp_cache_set($post->ID,$related_posts_data,'related_posts',3600);
}
echo $related_posts_data;

因为设置了一个小时,相关日志的数据就失效,这里一般就无需更新缓存了,如果你在后台更改了设置,需要立即清理缓存,可以使用 wp_cache_delete 进行清理:


wp_cacache_delete($post->ID,'related_posts');

阅读了这篇文章的用户:

  • 拟月幻真
  • 大肥羊
  • young
  • 胖瓜
  • 花开花落_云卷云舒_aip
  • 邓昌东
  • denishua
  • 东莞营销型网站建设
  • 动画狂
  • Minecraft中文下载站
  • 超級efly
  • hankcs
  • Yu
  • pdl
  • DLMAC
  • 呆萌未遂
  • 海量热帖
  • 呃完自己呃人地
  • 玩转MAC
  • 飛飛飛飛
  • 购物生活(好店品)
  • 黯然过客
  • 莫小伤
  • 斌果
  • 李君南
  • brainbush
  • cnxzcxy
  • 胡倡萌
  • 小拙
  • Zivix
  • 栩风
  • 魔多堂
  • zxzxx
  • 想念Gordeeva
  • 雅鹿羽绒服女款
  • Louis小木
  • 趣味集
  • 强大大
  • 李惟
  • 豆包儿网
  • 常寻
  • 秦羽
  • 谈腾
  • 数码公会会员杨志龙
  • 解然
  • 飞心未泯
  • 沙若哥
  •  
  • tom
  • 博客集聚地
  1. 如果服务器支持 eAcc 或 XCache 的话,用好这个可以大大提高 WP 的效率。我怀疑 WP.com 就用了这个方法,eAcc 配上 MemCache,缓存命中率能到 90%

  2. 原理倒是这样的,不过对于用虚似空间的博客来说,可能会被主机限制。因为这样的缓存是占内存的,管理的不好会导致服务器资源紧张,所以一般主机会限制。原理与OSCache和Memchche一样。

  3. 水煮大名久仰,最近开始订阅,慢慢学习。这篇太深奥,不懂。
    想问一下,有没有插件可以让文章一半显示,一半需要密码才继续阅读的呢?

  4. 一小时后 现在 貌似效果还是有的 网站速度明显快乐些 虽然不是生产静态页(我想要的结果) :neutral:

  5. 好像没用。。。代码写错了?<?phpglobal $post;$random_posts_data = wp_cache_get( $post->ID, ‘random_posts’ );if( ! $random_posts_data ) {$random_posts_data = get_random_posts_igoogler(10);wp_cache_set( $post->ID, $random_posts_data, ‘random_posts’, 3600 );}echo $random_posts_data;?>

  6. 请问,目前有个问题,我有台VPS.挂了两个wordpress,但是呢,我开启其中一个wordpress的缓存后,再开启第二个,第二个会自动路由到第一个wordpress上.若关闭第二个缓存,就没事了,请问是什么原因导致的呢.

热门文章