/**
* 取得存在的缓存数据
*
* 根据ID和分组搜索数据,如果数据存在,返回数据
*
* 失败时检查$non_existant_objects属性,如果缓存ID和分组在这个属性中存在,直接返回.
* 如果不存在,则cache_misses加1,并把ID和分组添加到$non_existant_objects中。
*
*
* @参数 int|string $id 标识缓存中的数据
* @参数 string $group 缓存所在的分组
* @返回值 bool|mixed 失败时返回false,成功时返回ID对应的数据
*/
function get($id, $group = 'default') {
if (empty ($group))
$group = 'default';
if (isset ($this->cache[$group][$id])) {
$this->cache_hits += 1;
if ( is_object($this->cache[$group][$id]) )
return wp_clone($this->cache[$group][$id]);
else
return $this->cache[$group][$id];
}
if ( isset ($this->non_existant_objects[$group][$id]) )
return false;
$this->non_existant_objects[$group][$id] = true;
$this->cache_misses += 1;
return false;
}
/**
* 替换已经存在的数据
*
* @see WP_Object_Cache::set()
*
* @参数 int|string $id 标识缓存中的数据
* @参数 mixed $data 要保存的数据
* @参数 string $group 缓存分组
* @参数 int $expire 缓存过期时间
* @返回值 bool 不存在时返回false,替换成功时返回true
*/
function replace($id, $data, $group = 'default', $expire = '') {
if (empty ($group))
$group = 'default';
if (false === $this->get($id, $group, false))
return false;
return $this->set($id, $data, $group, $expire);
}
/**
* 把数据保存在缓存中
*
* 缓存数据按照$group进行分组. 不同组中可以添加相同ID的数据.
*
* $expire参数没有使用,因为php页面执行结束时,缓存会自动结束. 一般在使用文件来缓存数据的插件中使用。
*
* @参数 int|string $id 标识缓存中的数据
* @参数 mixed $data The 要保存的数据
* @参数 string $group 数据所在的分组
* @参数 int $expire 过期时间,未使用
* @返回值 bool 永远返回true
*/
function set($id, $data, $group = 'default', $expire = '') {
if (empty ($group))
$group = 'default';
if (NULL === $data)
$data = '';
if ( is_object($data) )
$data = wp_clone($data);
//保存值到全局变量中
$this->cache[$group][$id] = $data;
//如果这个选项在non_existant_objects中存在,则取消存在
if(isset($this->non_existant_objects[$group][$id]))
unset ($this->non_existant_objects[$group][$id]);
return true;
}
续三:
http://baiyuxiong.iteye.com/blog/769002
分享到:
相关推荐
WordPress使用了一个名为`wp_cache`的全局函数来与ObjectCache进行交互。 **3. ObjectCache的实现** ObjectCache通常由两种主要组件组成:后端存储和API接口。后端存储可以是内存中的键值存储,如Memcached或Redis...
wp_nav_menu()函数调用_wp_menu_item_classes_by_context() ,根据上下文,该函数再次调用wp_get_object_terms() ,该缓存多次未被缓存。 有许多分类法,术语和菜单项,这可能导致相当数量的(完全冗余的)数据库...
WP Spider Cache是您友好的WordPress邻居缓存解决方案。 它使用Memcached来存储对象和页面输出。 如果您熟悉Batcache和WP Super Cache,那么您将在这里。 它带有: 支持注册多个Memcached后端服务器 用于查看...
WP Redis 使用Redis的WordPress对象缓存。 由Alley Interactive提供。先决条件 设置将object-cache.php安装到wp-content/object-cache.php 。 在wp-config.php文件中,添加服务器凭据: $redis_server = array( '...
WP缓存记住 WP Cache Remember是一个简单的WordPress包含,它引入了方便的新缓存功能。... $ cached = wp_cache_get ( $ cache_key ); // Return the cached value. if ( $ cached ) { return $ cached ;
uWSGI WordPress对象缓存 该插件使用uWSGI缓存在WordPress中进行对象缓存。 警告 该插件需要手动安装 uWSGI中存在一个错误,因此您需要包含 安装 将object-code.php文件移动到您的WP_CONTENT_DIR 添加define( '...
Redis(一种高性能内存存储后端)支持您的 WP Object Cache。描述对于流量大、登录用户速度快或动态页面加载的网站,高速持久的对象缓存必不可少。您还需要能够跨应用程序的多个实例进行扩展的缓存,因此使用本地...
【Wordpress缓存】 WordPress提供了多种缓存策略,包括页面缓存、对象缓存和数据库缓存。对象缓存主要用于存储WP的短期数据,如查询结果、会话信息等。使用Redis作为对象缓存后,这些数据将存储在内存中,而不是写入...
总览一个高效,可预测且经过单元测试的WordPress对象缓存后端,可使用Redis PECL库实现所有可用方法。为什么这个叉子更好? 通过单个mget()调用预加载已知的缓存键,并进行延迟反序列化进一步的微优化例程使其成为最...
需要将object-cache.php文件上传到 wp-content 目录里,重启 PHP-FPM 进程即可生效。
记录缓存 使用持久性对象缓存来增强您的网站的性能,并通过OPcache后端加速缓存。 描述 Docket缓存是一个持久的WordPress对象缓存,存储为纯PHP代码。 打算为无法使用Redis或Memcached服务器的用户提供替代选项。 ...