龙虎大战做庄优化 多用户博客 龙虎大战做庄 文章列表页加载

主循环并不是一次将所有作者数据加载

龙虎大战做庄龙虎大战做庄我 们 知道 龙虎大战做庄 的主循环,查询到 posts 之后,会去检查这个文章列表的所有 postmeta 和 term 数据是否有缓存,如果没有,他会分别使用一条 SQL 加载出来,这样即使没有缓存,也可以有大量的 SQL 查询。

如果多用户博客,如果文章列表的作者不同,龙虎大战做庄 查询到 posts 之后,并不是一次将所有用户加载的,而是在文章列表渲染的时候,每个作者单独去加载的,如果列表数据多,并且作者不同,那么会有相当多的 SQL 请求。

在主循环一次加载所有作者数据

那么为了提高效率,龙虎大战做庄龙虎大战做庄我 们 可以龙虎大战做庄 的主循环查询到 posts 之后,一次所有作者数据都加载了。

add_filter('posts_results',	 function ($posts){
	if(count($posts)>1){
		$post_authors	= array_unique(wp_list_pluck($posts, 'post_author'));
		if(count($post_authors)>1){
			cache_users($post_authors);
		}
	}

	return $posts;
});

特别注意的是:cache_users 函数首先去缓存里面查询是否有每个作者的用户信息,然后将没有的用户信息使用一条 in SQL 查询出来,并写到内存中,所以如果系统已有内存缓存,其实对效率是有显著的提升的。


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

龙虎大战做庄本站 长期承接 龙虎大战做庄 龙虎大战做庄优化 建站业务,要求很高,有兴趣请联系微信:「chenduopapa」或微信龙虎大战做庄公众号 :「龙虎大战做庄果酱」。

龙虎大战做庄热门 文章