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

wordpress缓存类WP_Object_Cache分析【续三】

    博客分类:
  • php
阅读更多
/**
	 * 显示缓存状态
	 *
	 * 显示缓存取值成功、失败的次数和所有的缓存分组及组下的数据
	 *
	 */
	function stats() {
		echo "<p>";
		echo "<strong>Cache Hits:</strong> {$this->cache_hits}<br />";
		echo "<strong>Cache Misses:</strong> {$this->cache_misses}<br />";
		echo "</p>";

		foreach ($this->cache as $group => $cache) {
			echo "<p>";
			echo "<strong>Group:</strong> $group<br />";
			echo "<strong>Cache:</strong>";
			echo "<pre>";
			print_r($cache);
			echo "</pre>";
		}
	}

	/**
	 * PHP4风格的构造函数; 调用PHP 5风格的构造函数

	 * @返回值 WP_Object_Cache
	 */
	function WP_Object_Cache() {
		return $this->__construct();
	}

	/**
	 * Sets up object properties; PHP 5 style constructor
	 *
	 * @since 2.0.8
	 * @返回值 null|WP_Object_Cache If cache is disabled, returns null.
	 */
	function __construct() {
		/**
		 * @todo This should be moved to the PHP4 style constructor, PHP5
		 * already calls __destruct()
		 */
		//注册一个结束时的回调函数
		register_shutdown_function(array(&$this, "__destruct"));
	}

	/**
	 * 析构函数	 *
	 * Called upon object destruction, which should be when PHP ends
	 *
	 * @返回值 bool True value. Won't be used by PHP
	 */
	function __destruct() {
		return true;
	}

总体分析,wp的缓存类,实现了数据库一样的增删改查功能。只不过数据是保存在内存里,而不是数据库中。

wp中调用缓存对象的方法是并不是直接在代码中像这样调用
	global $wp_object_cache;

	return $wp_object_cache->add($key, $data, $flag, $expire);

而是封装在一个方法里:
function wp_cache_add($key, $data, $flag = '', $expire = 0) {
	global $wp_object_cache;

	return $wp_object_cache->add($key, $data, $flag, $expire);
}

调用的时候,像这样调用:
wp_cache_add($comment->comment_ID, $comment, 'comment');

由原来的两层结构,中间又加一层封装,变成三层,提高了代码的重用性、扩展性和可维护性。这正是我们写程序时应该追求的。
分享到:
评论

相关推荐

    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