缓存似乎不起作用 - 多馈

时间:2013-07-23 08:39:27

标签: rss feed simplepie

我使用simplepie来合并rss feed。我在这个页面上有两个部分,它们使用不同的Feed。我整理他们。这是我的代码:     

$feeds=array(
'http://feeds.feedburner.com/Belvederegasse',
'http://diealternative.org/zeitschrift/feed/rss/',
'http://diealternative.org/arbeitsklima/feed/rss/',
'http://feeds.feedburner.com/Arbeitszeit',
'http://feeds.feedburner.com/AugeFinance',
    'http://diealternative.org/nulllohnrunden/feed/',
    'http://diealternative.org/bulletin/feed/rss/',
    'http://feeds.feedburner.com/verteilungsgerechtigkeit',
    'http://feeds.feedburner.com/hochschule',
    'http://feeds.feedburner.com/Sozialmilliarde'
);        
$first_items = array();


foreach ($feeds as $url)
{
    $feed = new SimplePie();
    $feed->set_stupidly_fast(true);
    $feed->enable_order_by_date(true);
    $feed->enable_cache(true);
    $feed->set_feed_url($url);
    $feed->init();
    $items_per_feed = 5;

    for ($x = 0; $x < $feed->get_item_quantity($items_per_feed); $x++){
        $first_items[] = $feed->get_item($x);
    }

    unset($feed);
}

function sort_items($a, $b){
    return SimplePie::sort_items($a, $b);
}


usort($first_items, "sort_items");


foreach ($first_items as $item): 

    if ($itemlimit==8) { break; }

        //HTML output

    $itemlimit = $itemlimit + 1;
endforeach; 
?> 

当您访问页面http://diealternative.org时,加载时间超过20秒。这并不奇怪,因为有很多源要解析,但有关缓存的内容是什么?一旦加载它不应该重新连接到feed,它应该使用缓存。

为什么每次加载都需要这么长时间。

2 个答案:

答案 0 :(得分:1)

一些事情:首先,默认情况下它只缓存60分钟我认为 - 我将其设置为24小时,以便它保存一整天的缓存。第一个负载很慢,但在此之后加速。此外,set_stupidly_fast函数可能会禁用缓存或其他内容。

其次,SimplePie将为您合并提要并按日期排序,您不需要像这样的嵌套循环。试试这个:

$max_items_per_feed = 5;  // this pulls the top 5 articles from each feed
$max_items_total = 50;  // this caps the total articles
$feed = new SimplePie();
$feed->set_feed_url($feeds);

// limit the number of items
$feed->set_item_limit($max_items_per_feed);
$feed->enable_cache(true);
$feed->set_cache_duration(86400);  // refresh cache once a day - 24 hrs

// Run SimplePie.
$success = $feed->init();

// This makes sure that the content is sent to the browser as text/html and the UTF-8 character set (since we didn't change it).
$feed->handle_content_type();

foreach ($feed->get_items(0, $max_items_total) as $key=>$item) {
   ...
}

答案 1 :(得分:0)

对我有用的是使用Simplepie生成单独的html文件。这些我保存到服务器并将它们包含在主页面上。通过使用cronjobs,我会让他们更新。

网站的加载时间现在很好。 (速度提高150%!)

汤姆

相关问题