假设我已经通过一些早期的过程获得了$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?
最合适的回答,由SO网友:Rarst 整理而成
模板标记依赖于全局$post
(除非您明确向支持它的人提供其他内容。因此:
他们从这个变量中得到了一些东西(没有理由在数据库中使用它)
或者他们没有(然后他们失败了,因为他们不知道你想要什么)
在大多数正常情况下,没有理由担心模板标签的影响。只有当你开始处理大量的帖子和/或应用过于复杂的过滤器时,这才起作用。
Update after discussion in comments
get_post()
总是在缓存调用数据库之前尝试调用缓存。通过显式修改POST的函数清除缓存(请参阅
clean_post_cache()
) 或自然过期。