WordPress 6.3 缓存功能将大幅增强与改进

为了进一步提高 WordPress 的效率,WordPress 6.3 对缓存功能做了下面这些增强和改进:

更改所有查询的缓存组

WordPress 中很多的查询结果都会被缓存,比如所有主要的查询类 WP_QueryWP_Comment_Query 和 WP_Term_Query 等,从 6.3 开始,首先 WP_User_Query 的查询结果也会被缓存,然后在之前版本中,查询结果缓存与之相对应的对象的的缓存组(Cache Group)是相同的,比如文章查询数据将存储在 “posts” 缓存组中,从 6.3 开始这种方式将被改变。

6.3 将针对查询结果的缓存引进新的缓存组,使开发者在处理这些缓存组的时候有更大的控制权,底层核心功能现在允许开发者为缓存组指定过期时间,例如,可以设置一天的时长。如有需要,开发者还可以使用 wp_cache_flush_group()函数来清除特定的缓存组(如果他们的使用缓存服务已经实现支持它)。此外,此更改还允许开发者根据需要将缓存组指定为非持久性的。以下是新增加的缓存组:

  • post-queries
  • term-queries
  • comment-queries
  • network-queries(全局缓存组)
  • site-queries(全局缓存组)
  • user-queries(全局缓存组)

新工具函数 

WordPress 6.3 引入了一个新的工具函数 wp_cache_set_last_changed()用于更新缓存中的最后更新值,它是对在 WordPress 4.7 中添加的 wp_cache_get_last_changed() 函数的补充,核心代码中所有更新缓存最后更新值都会替换为对此新函数的调用。

此外还引入了一个相应的 action:wp_cache_set_last_changed ,该 action 提供了诸如缓存组、最新更新值和旧值等有用的信息,开发者可以利用它实现自定义的缓存失效策略。结合前面提到的新缓存组和 wp_cache_flush_group() 函数,就可以实现以编程方式清除整个缓存组,下面是一个具体的例子:

add_action( 'wp_cache_set_last_changed', function( $group ){ 
	switch( $group ){	
		case 'comment': 
			$cache_group = 'comment-queries'; 
			break; 
		case 'sites': 
			$cache_group = 'site-queries'; 
			break; 
		case 'networks': 
			$cache_group = 'network-queries'; 
			break; 
		case 'posts': 
			$cache_group = 'post-queries'; 
			break; 
		case 'terms': 
			$cache_group = 'term-queries'; 
			break; 
		case 'users': 
			$cache_group = 'user-queries'; 
			break; 
		default: 
			$cache_group = false; 
	}

	if( $cache_group ){ 
		wp_cache_flush_group( $cache_group ); 
	} 
} );

其他增强和修改

6.3 还更新了 _get_non_cached_ids() 函数,支持验证无效 IDs,确保输入的数组是唯一并且为整数。在以前的版本中,没有对输入进行验证,可能导致验证错误甚至 PHP 致命错误,现在,此函数仅支持传递整数数组,如果传递了错误的值,将触发_doing_in_wrong 函数生成消息以通知开发者。

在 5.5 引进的 wp_cache_get_multiple 在 6.3 将会应用到更多的地方,比如用于获取所有核心站点选项的 wp_load_core_site_options 函数中,或者 WP_Comment_Queryfill_descendants(填充子评论)操作中,只需要一次缓存请求就能获取所有数据。

这些更新提高了 WordPress 对缓存的利用效率,从而提高站点的响应速度和性能,特别是服务器已经安装了 Memcached 这类内存的情况下。

最后 WordPress 优化参考:

使用 Memcached 内存缓存来提高 WordPress 站点速度

WordPress 性能优化:为什么我的博客比你的快


©我爱水煮鱼,本站推荐使用的主机:阿里云,国外主机建议使用BlueHost

本站长期承接 WordPress 优化建站业务,请联系微信:「chenduopapa」。