`
baiyuxiong
  • 浏览: 177956 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

wordpress缓存类WP_Object_Cache分析【续二】

    博客分类:
  • php
阅读更多
/**
	 * 取得存在的缓存数据
	 *
	 * 根据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
分享到:
评论

相关推荐

    php运行时缓存ObjectCache

    WordPress使用了一个名为`wp_cache`的全局函数来与ObjectCache进行交互。 **3. ObjectCache的实现** ObjectCache通常由两种主要组件组成:后端存储和API接口。后端存储可以是内存中的键值存储,如Memcached或Redis...

    menu-cache:使用Transients API轻松缓存呈现的菜单

    wp_nav_menu()函数调用_wp_menu_item_classes_by_context() ,根据上下文,该函数再次调用wp_get_object_terms() ,该缓存多次未被缓存。 有许多分类法,术语和菜单项,这可能导致相当数量的(完全冗余的)数据库...

    wp-spider-cache:WordPress的友好社区缓存解决方案

    WP Spider Cache是​​您友好的WordPress邻居缓存解决方案。 它使用Memcached来存储对象和页面输出。 如果您熟悉Batcache和WP Super Cache,那么您将在这里。 它带有: 支持注册多个Memcached后端服务器 用于查看...

    wp-redis:使用Redis的WordPress对象缓存

    WP Redis 使用Redis的WordPress对象缓存。 由Alley Interactive提供。先决条件 设置将object-cache.php安装到wp-content/object-cache.php 。 在wp-config.php文件中,添加服务器凭据: $redis_server = array( '...

    wp-cache-remember:WordPress对象缓存和瞬态的助手

    WP缓存记住 WP Cache Remember是一个简单的WordPress包含,它引入了方便的新缓存功能。... $ cached = wp_cache_get ( $ cache_key ); // Return the cached value. if ( $ cached ) { return $ cached ;

    uwsgi-object-cache:uWSGI WordPress对象缓存

    uWSGI WordPress对象缓存 该插件使用uWSGI缓存在WordPress中进行对象缓存。 警告 该插件需要手动安装 uWSGI中存在一个错误,因此您需要包含 安装 将object-code.php文件移动到您的WP_CONTENT_DIR 添加define( '...

    使用 Redis 的 WordPress 对象缓存 .zip

    Redis(一种高性能内存存储后端)支持您的 WP Object Cache。描述对于流量大、登录用户速度快或动态页面加载的网站,高速持久的对象缓存必不可少。您还需要能够跨应用程序的多个实例进行扩展的缓存,因此使用本地...

    基于PHP的Wordpress专用Redis缓存系统.zip

    【Wordpress缓存】 WordPress提供了多种缓存策略,包括页面缓存、对象缓存和数据库缓存。对象缓存主要用于存储WP的短期数据,如查询结果、会话信息等。使用Redis作为对象缓存后,这些数据将存储在内存中,而不是写入...

    pj-object-cache-red:您会发现最快的WordPress Redis对象缓存

    总览一个高效,可预测且经过单元测试的WordPress对象缓存后端,可使用Redis PECL库实现所有可用方法。为什么这个叉子更好? 通过单个mget()调用预加载已知的缓存键,并进行延迟反序列化进一步的微优化例程使其成为最...

    WordPress使用Memcached必备对象缓存PHP文件!

    需要将object-cache.php文件上传到 wp-content 目录里,重启 PHP-FPM 进程即可生效。

    docket-cache:以纯PHP代码存储的持久对象缓存,可通过OPcache后端加速缓存

    记录缓存 使用持久性对象缓存来增强您的网站的性能,并通过OPcache后端加速缓存。 描述 Docket缓存是一个持久的WordPress对象缓存,存储为纯PHP代码。 打算为无法使用Redis或Memcached服务器的用户提供替代选项。 ...

Global site tag (gtag.js) - Google Analytics