FECH_Feed()是否使用了大量服务器资源?

时间:2016-05-24 作者:Siyalla Dath

我有一个称为博客的自定义帖子类型(博客URL保存为自定义字段)。有近250种博客自定义帖子类型。当加载自定义帖子类型(博客)时,我使用fetch_feed() 获取该博客的最新帖子。

现在我的站点位于localhost上。我的一个朋友说我不能用共享主机托管这个网站,因为我的网站使用了很多资源。这是真的吗?

2 个回复
SO网友:Pranav Bhatt

是的,您的代码确实会比正常代码消耗更多的资源。因为您正在使用feed和fetch_feed() 消费更多。它基于RSS或来自URL的Atom提要创建SimplePie对象。你可以做一件事,如下限制你的帖子:

<h2><?php _e( \'Recent news from Some-Other Blog:\', \'wpdocs_textdomain\' ); ?></h2>

<?php // Get RSS Feed(s)
include_once( ABSPATH . WPINC . \'/feed.php\' );

// Get a SimplePie feed object from the specified feed source.
$rss = fetch_feed( \'http://example.com/rss/feed/goes/here\' );

$maxitems = 0;

if ( ! is_wp_error( $rss ) ) : // Checks that the object is created correctly

    // Figure out how many total items there are, but limit it to 5. 
    $maxitems = $rss->get_item_quantity( 5 ); 

    // Build an array of all the items, starting with element 0 (first element).
    $rss_items = $rss->get_items( 0, $maxitems );

endif;
?>

<ul>
    <?php if ( $maxitems == 0 ) : ?>
        <li><?php _e( \'No items\', \'wpdocs_textdomain\' ); ?></li>
    <?php else : ?>
        <?php // Loop through each feed item and display each item as a hyperlink. ?>
        <?php foreach ( $rss_items as $item ) : ?>
            <li>
                <a href="<?php echo esc_url( $item->get_permalink() ); ?>"
                    title="<?php printf( __( \'Posted %s\', \'wpdocs_textdomain\' ), $item->get_date(\'j F Y | g:i a\') ); ?>">
                    <?php echo esc_html( $item->get_title() ); ?>
                </a>
            </li>
        <?php endforeach; ?>
    <?php endif; ?>
</ul>

SO网友:Rarst

它决定了您要测量哪些确切的资源。检索提要本质上是一个网络请求。

发出网络请求不是CPU或内存密集型的,但相对来说速度非常慢。根据特定主机的限制和配置,这可能是问题,也可能不是问题。

此外,源也是本地缓存的。然而,如果在像您这样的用例中刷新缓存,则可能意味着需要请求大量提要。这很可能会破坏代码,编写时没有考虑到这一点。