为了减少CPU负载,我应该使用GET_POST还是wp_QUERY?

时间:2013-01-04 作者:Cristian Sava

我有一个博客,主页上有3块帖子。所以,我用“get\\u post”获得这些帖子,我在页面上有3个类似的代码:

global $post;
$args = array( ... );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
.......
<?php endforeach; ?>
我的CPU负载很高,我想知道我是否会使用“wp\\u query”来节省我的CPU。谢谢

以下是我的get\\u posts()查询:

<?php
global $post;
$args = array( \'numberposts\' => 5, \'offset\'=> 0, \'category\' => "1"   );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php the_title(); ?>
</div>
<?php endforeach; ?>
<小时>
<?php
global $post;
$args = array( \'numberposts\' => 7, \'offset\'=>0, \'category\' =>"2 , 4 , 6 , 7 , 9 ,10,11");
$myposts = get_posts( $args );

foreach( $myposts as $post ) :  setup_postdata($post); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php the_post_thumbnail(array(\'size\' => 300,300), array(\'title\' => \'\')); ?>
</div>
<?php endforeach; ?>
<小时>
<?php
$args = array( \'numberposts\' => 15, \'orderby\' => \'rand\' ,\'offset\'=>0, \'category\' =>"31");
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
<?php the_title(); ?>
</div>
  <?php endforeach; ?>

2 个回复
SO网友:Chip Bennett

我怀疑使用get_posts() vs公司WP_Query() 将对CPU负载产生任何有意义/明显的影响。最终get_posts() is just a wrapper for WP_Query(), 无论如何:

$get_posts = new WP_Query;
return $get_posts->query($r);
通过查看查询本身的效率,您会得到更好的服务;但要在那里提供具体帮助,我们需要看到get_posts() 查询。

SO网友:Tom J Nowell

所有查询最终都是WP_Query, 虽然有些比另一些好(永远不要使用query_posts ), 性能差异get_posts vs WP\\U查询可以忽略不计。

严格的答案是WP_Query 速度更快,但速度更快的幅度太小,不值得优化。

If you have high CPU load, switching between get_posts and WP_Query is not the solution

我建议核心开发人员Nacin查看此幻灯片集,该幻灯片集解释了何时以及如何使用查询,以及为什么:

http://www.slideshare.net/andrewnacin/you-dont-know-query-wordcamp-netherlands-2012

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post