Wordpress的缓存类WP_Object_Cache在wp-includes/cache.php文件中。与一般的缓存类将数据缓存在文件中不同,WP将数据缓存在内存中,所以每次客户端请求,都要重新生成缓存,请求处理结束后,缓存就清空了。这样唯一的好处是,一次请求中,需要多次使用的数据,比如site_name,只需要去数据库中查询一次,以后直接读内存就可以了,速度比读数据库快,提高程序执行效率。
下面来分析WP_Object_Cache的实现
实在是无奈,同一篇文章,代码贴多了,就发布失败,只能分在几篇文章里发,对不起大家了。
续:[url]http://baiyuxiong.iteye.com/admin/blogs/768988[/url]
下面来分析WP_Object_Cache的实现
class WP_Object_Cache {
//所有的缓存数据都保存在这个变量里
var $cache = array ();
//缓存中不存在的变量
//调用get方法是取不到的值,都保存在这里
var $non_existant_objects = array ();
//记数 记录取值时成功的次数
var $cache_hits = 0;
//记数 记录取值时失败的次数
var $cache_misses = 0;
/**
* 向缓存中添加新数据
*
* @使用 WP_Object_Cache::get 检查缓存中是否已存在该数据.
* @使用 WP_Object_Cache::set 检查了缓存中数据不存在后,设置新值
*
* @参数 int|string $id 标识缓存中的数据
* @参数 mixed $data 要保存的数据
* @参数 string $group 缓存内容的分组 wp把数据按不同的类型分组,如comment、bookmark等
* @参数 int $expire 缓存内容的过期时间 从未使用过
* @返回值 bool 缓存ID和组存在时返回false,否则返回true
*/
function add($id, $data, $group = 'default', $expire = '') {
if (empty ($group))
$group = 'default';
//如果组$group下id为$id的值已经存在,则不能新增,返回false
if (false !== $this->get($id, $group, false))
return false;
return $this->set($id, $data, $group, $expire);
}
}
实在是无奈,同一篇文章,代码贴多了,就发布失败,只能分在几篇文章里发,对不起大家了。
续:[url]http://baiyuxiong.iteye.com/admin/blogs/768988[/url]