WordPress加载当前查询中所有帖子的元数据,以避免每次使用帖子元数据时执行SQL查询。几乎在所有情况下,这都会带来巨大的性能优势。
这个预缓存可以被禁用(我将在一分钟内进行讨论),但不幸的是,对每个帖子存储400个帖子元字段,无论这个缓存是否被禁用,都会导致性能问题。如果启用预缓存,您将看到当前看到的内存问题。如果禁用预缓存,则在使用这些后期元字段(例如,在主题中)时,将看到执行的SQL查询数量增加。
因此,请继续禁用此预缓存。它通过update_post_meta_cache
查询变量,设置为true
默认情况下,用于所有post查询。要禁用它,您需要针对感兴趣的查询并将其设置为false。示例:
function wpse_160203( WP_Query $wp_query ) {
if ( \'property\' == $wp_query->get( \'post_type\' ) ) {
$wp_query->set( \'update_post_meta_cache\', false );
}
}
if ( is_admin() ) {
add_action( \'pre_get_posts\', \'wpse_160203\' );
}
这将阻止对
property
管理区域中的帖子类型。如果要对前端执行相同操作,只需删除
is_admin()
有条件的,但请记住,如果您实际开始使用这400个post元字段,您将看到SQL查询的急剧增加,并且内存使用率可能不会有太大的下降。