公告:123目录网为广大站长提供免费收录网站服务,我们将免费进行到底,如需快审服务(10元/站)请联系站长QQ,可自助充值发布。

点击这里在线咨询客服
新站提交
  • 网站:315
  • 待审:0
  • 小程序:12
  • 文章:35791
  • 会员:69

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

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

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

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

那么为了提高效率,我们可以WordPress 的主循环查询到 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 查询出来,并写到内存中,所以如果系统已有内存缓存,其实对效率是有显著的提升的。

标签:wordpress教学

下一篇:【wordpress教学】使用内存缓存优化 WordPress 自动草稿功能

上一篇:【wordpress教学】WordPress 18 岁生日快乐

相关文章

  575

注册时间:

网站:1 个   小程序:3 个  文章:12 篇

  • 315

    网站

  • 12

    小程序

  • 35791

    文章

  • 69

    会员

赶快注册账号,推广您的网站吧!
最新入驻小程序

数独大挑战2018-06-03

数独一种数学游戏,玩家需要根据9

答题星2018-06-03

您可以通过答题星轻松地创建试卷

全阶人生考试2018-06-03

各种考试题,题库,初中,高中,大学四六

运动步数有氧达人2018-06-03

记录运动步数,积累氧气值。还可偷

每日养生app2018-06-03

每日养生,天天健康

体育训练成绩评定2018-06-03

通用课目体育训练成绩评定