我使用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,它应该使用缓存。
为什么每次加载都需要这么长时间。
答案 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%!)
汤姆