使用新的WP_QUERY优化数据库查询

时间:2016-12-30 作者:Enrico Cassinelli

我正在构建一个简单的插件(主要是出于自学目的),通过一个短代码(如[网络帖子博客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上更可读。

1 个回复
SO网友:prosti

如果设置update_post_meta_cacheupdate_post_term_cachefalse 在设置WP_Query 参数。

禁用缓存时,仅在需要时才从数据库请求数据。

你可以查看我的帖子here.如果你需要更多信息,请告诉我。

相关推荐

Multisite Smtp Server

所以我遇到了一个问题。我有wordpress多站点,但问题是发送smtp电子邮件。我所做的是在plesk中创建smtp服务器。使用来自smtp服务器的凭据。然后在域中使用DNS发送电子邮件;“自”;住址问题是,并不是我的所有客户都知道如何添加DNS。我是否可以从Plesk添加这些DNS条目?我知道有DNS设置,但我不确定这是否会覆盖客户DNS?例如:博客名称:xyz。comadmin电子邮件:[email protected]