优化多用户博客 WordPress 文章列表页加载
2023-06-13 09:18:30 时间
我们知道 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 查询出来,并写到内存中,所以如果系统已有内存缓存,其实对效率是有显著的提升的。
相关文章
- 自动升级Halo博客脚本
- 新手如何安装 WordPress,建设个人博客网站?
- 【说站】WordPress自媒体资讯博客主题子比主题zibll V6.1开心版
- WordPress后台加载速度慢的问题Wordpress博客 2 年前 桃李Taoli
- Github Pages 速度慢 vercel 部署静态博客
- 程序员最优的做笔记或写博客工具
- 使用 HammerDB 对 Citus 和 Postgres 进行 Benchmark,每分钟200万新订单处理测试(官方博客)
- typecho统计博客所有文章的字数
- 实用的博客网站运行天数代码片段
- [android] 看博客学习Android常见的几种RuntimeException详解手机开发
- WORDPRESS博客程序怎么移除后台忘记密码的链接呢?
- SQL Server入门博客,初学者必看!(sqlserver 博客)
- 狂神引领Redis风潮一场博客大冲刺(狂神Redis博客)