如果我使用像get_the_title()这样的本机API调用而不是$POST->POST_TITLE,我会看到性能下降吗?

时间:2011-08-25 作者:Tom Auger

假设我已经通过一些早期的过程获得了$post对象,该过程循环遍历一个ID数组,并在每个ID上使用get\\u post(),将生成的对象存储在某个数组中。

稍后,我想循环遍历该数组,并对每个帖子进行处理。我已经有了$my\\u post对象,所以我可以echo $my_post->post_title, 或者我可以想象一下echo apply_filters(\'the_title\', $my_post->post_title, $my_post->ID) 或者我可以用本地人get_the_title($my_post->ID).

这就是我的性能问题所在。本机缓存有多可靠(我不是说一些疯狂的插件,只是内置的wp_cache_get($post_id, \'posts\') 等等…)?

我想我要问的是:与使用缓存相比,get\\u the\\u title()返回DB并重新获取帖子的可能性有多大?从性能角度来看,仅仅使用我已经拥有的对象数据会更好吗?很明显,如果你使用内置的东西,你会得到更多的糖。但这是否有可能回到DB?

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

模板标记依赖于全局$post (除非您明确向支持它的人提供其他内容。因此:

他们从这个变量中得到了一些东西(没有理由在数据库中使用它)

或者他们没有(然后他们失败了,因为他们不知道你想要什么)

在大多数正常情况下,没有理由担心模板标签的影响。只有当你开始处理大量的帖子和/或应用过于复杂的过滤器时,这才起作用。

Update after discussion in comments

get_post() 总是在缓存调用数据库之前尝试调用缓存。通过显式修改POST的函数清除缓存(请参阅clean_post_cache() ) 或自然过期。

结束