バックグラウンドでフィード キャッシュを更新する方法を探しています。
私が直面している問題を実証するには、以下のコードが役立ちます。ページにアクセスしてロードすると、30 秒ごとにキャッシュが更新されます。一度にフェッチする URL がたくさんあるため、キャッシュを再構築する必要があると、非常に遅くなります。
$urls = array(
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=w&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=n&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=b&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=el&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=tc&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=ir&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=s&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=snc&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=m&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=e&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&q=topic:bagram&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&q=topic:syria&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&q=topic:baghdad&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&q=topic:bernard_arnault&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&q=topic:senkaku_islands&output=rss',
'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&q=topic:alps&output=rss'
);
$feed = fetch_feed_modified($urls);
foreach ($feed->get_items() as $item):
?>
<div class="item">
<h2><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></h2>
<p><?php echo $item->get_description(); ?></p>
<p><small>Posted on <?php echo $item->get_date('j F Y | g:i a'); ?></small></p>
</div>
<?php endforeach;
function fetch_feed_modified($url) {
require_once (ABSPATH . WPINC . '/class-feed.php');
$feed = new SimplePie();
$feed->set_feed_url($url);
$feed->set_cache_class('WP_Feed_Cache');
$feed->set_file_class('WP_SimplePie_File');
$feed->set_cache_duration(apply_filters('wp_feed_cache_transient_lifetime', 30, $url)); // set the cacne timeout to 30 seconds
do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) );
$feed->init();
$feed->handle_content_type();
if ( $feed->error() )
return new WP_Error('simplepie-error', $feed->error());
return $feed;
}
したがって、タイムアウトに達したときにバックグラウンドでキャッシュを静かに更新するように、これを変更する方法を考えています。つまり、タイムアウトを超えても、保存されたキャッシュでページが正常に表示されます。一方、アクセス後にバックグラウンドで新しいキャッシュの構築を開始します。このようにして、訪問者はページが遅いことに気付くことはありません。
出来ますか?