wordpress 的性能一致被广大用户所诟病,让我们来一起稍微优化优化。
除了 wp_head() 函数的对 wordpress 系统性能的影响外,主循环中层层嵌套的循环语句也消耗了大量的数据库查询时间。
<?PHP if (have_posts()) : while (have_posts()) : the_post(); ?>
<h2><a href=http://www.mangguo.org/"<?PHP the_permalink(); ?>"><?PHP the_title(); ?></a></h2>
<ul><?PHP $tags = get_the_tags(); foreach($tags as $tag) echo '
<li><a href=http://www.mangguo.org/"'.get_tag_link($tag -> term_id).'">'.$tag -> name.'</a></li>'; ?>
</ul>
<?PHP endwhile; else : endif; ?>
<h2><a href=http://www.mangguo.org/"<?PHP the_permalink(); ?>"><?PHP the_title(); ?></a></h2>
<ul><?PHP $tags = get_the_tags(); foreach($tags as $tag) echo '
<li><a href=http://www.mangguo.org/"'.get_tag_link($tag -> term_id).'">'.$tag -> name.'</a></li>'; ?>
</ul>
<?PHP endwhile; else : endif; ?>
在这个简单的循环体中,还嵌套输出了每篇文章的标签。这么多次查询读取想想都觉得有点可怕吧?有木有?
在 PHP 中有一个很妙的函数,叫做 flush(),该函数将当前为止程序的所有输出发送到用户的浏览器。详细参考这篇资料:http://cn.PHP.net/flush
<?PHP if (have_posts()) : while (have_posts()) : the_post(); ob_flush(); ?>
// insert code here
<?PHP flush(); endwhile; else : endif; ?>
// insert code here
<?PHP flush(); endwhile; else : endif; ?>