如何提高这个QUERY_POSTS循环的性能呢?

时间:2012-07-14 作者:jnthnclrk

我创建了一个WordPress页面模板,为我网站上的某些WordPress帖子构建一个定制的XML提要。具体来说,页面模板呈现XML,并且仅包括某些自定义帖子类型,并且仅当这些帖子包含特定元数据时。

我正在使用这些数据将WordPress内容提供给iOS应用程序。它似乎工作得很好;然而,来自服务器的响应时间各不相同,并且经常失败。我的托管公司(MediaTemple)建议我可以通过提高数据库查询的效率来提高性能。

这种查询有没有标准的优化提示?

<?php
$numposts = -1;
$posts = query_posts( \'&showposts=\' . $numposts . \'&post_type=listings\' );
header("Content-Type: application/rss+xml; charset=UTF-8");
echo \'<?xml version="1.0"?>\';
?>
<rss version="2.0">
<channel>
    <title>My custom feed</title>
    <?php foreach ($posts as $post) { if ( get_post_meta($post->ID, \'mymeta\', true) ) { ?>
        <item>
            <various item elements...>
        </item>
    <?php } ?>
    </channel>
</rss>

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

不知道这会有多戏剧性,但它应该会改善nontheless:

<?php

/**
 * You can try forcibly splitting the query (grabbing IDs *then* all fields)
 * Works well for large post results. (available WP 3.4+)
 */ 
add_filter( \'split_the_query\', \'__return_true\' );

$posts = get_posts( array(  
    \'post_type\' => \'listings\',
    \'posts_per_page\' => -1,

    /* Disable term caching ONLY if you\'re not using them in your loop. */
    \'update_post_term_cache\' => false,

    /* Ensures SQL_CALC_FOUND_ROWS is disabled */
    \'no_found_rows\' => true,

    /* If you\'re only operating on these, filter out at the query stage rather than the loop. */
    \'meta_key\' => \'mymeta\',
));

header( \'Content-Type: application/rss+xml; charset=UTF-8\' );
echo \'<?xml version="1.0"?>\';

?>
<rss version="2.0">
<channel>
    <title>My custom feed</title>
        <?php foreach ( $posts as $post ) :  ?>
            <item>
                <various item elements...>
            </item>
        <?php endforeach ?>
    </channel>
</rss>

SO网友:Damien

您可以为此连接瞬态API,并将wp\\U查询的结果存储在数据库中1-2小时。。。

在Wrox的WordPress插件书中,有一个很好的此类查询示例,或者看看JustinTadlock的网站

结束

相关推荐

多站点、上传问题和iOS!

这个问题发生了重大变化。我有最新版本的Wordpress,并将其托管在Apache服务器上。链接到博客:http://blogs.bzaeds.org/test/2012/05/11/video-test/现在,事情是这样的。当我将视频上传到Wordpress时,它将在Firefox中的Mac上播放,并提供Wordpress URL(例如:http://blogs.bzaeds.org/test/files/2012/05/720-dunk.mp4“提供商=“视频”)。事实上,我现在可以在我的Firefo