我正在构建一个简单的插件(主要是出于自学目的),通过一个短代码(如[网络帖子博客8”layout=“grid”columns=“3”)查询来自MS网络上另一个博客的帖子,但我遇到了一些性能问题/疑虑。
Here\'s the issue:
据我所知(也许我错了),在创建和循环
new WP_Query
, 只应在数据库上执行1个新查询。
当我使用快捷代码(不切换到其他博客)时,添加了7个新的数据库查询。
当我切换到另一个博客时(只有1个切换),额外的查询变成32个。
其他查询由调用update_meta_cache()
和WP_Post::get_instance()
并以少量精选的形式出现:
SELECT post_id, meta_key, meta_value
FROM wp_11_postmeta
WHERE post_id IN (109)
ORDER BY meta_id ASC
以及
SELECT *
FROM wp_11_posts
WHERE ID = 109
LIMIT 1
当切换到另一个博客时,这两个查询将为正在加载的每个帖子复制。
有没有办法减少数据库查询的数量?
该插件位于github上,这是指向我用于调试目的的简化分支的链接:https://github.com/langhenet/display-network-posts/tree/debug在这里switch_to_blog()
在php代码中有注释,但可以通过取消第40行和第64行的注释来激活它。
编辑:插件只有大约70行代码分布在两个文件上。我没有将代码粘贴到这里,因为我认为它在github上更可读。