我一直在使用SimplePie从提要中提取项目,并将它们显示在我的站点上的一个备用部分。我之前没有注意到,但这会将站点的加载时间增加10秒以上。我之所以相信,是因为我没有使用缓存,所以每次有人进入网站时,他们都会再次访问/下载提要。
所以我设置了一个cronjob作为documentation 告诉我。正在创建update_simplepie_cache.php
在public\\u html中。这起作用了,cron作业在中创建了一个文件public_html/cache/
.
The question is - how do I change my current markup to fetch info from the cache instead of directly from the feed?
这是我一直在使用的标记(位于front page.php中)
<?php
require_once (ABSPATH . WPINC . \'/class-feed.php\');
$feed_url = \'feed://nordiccoffeeculture.com/feed/\';
$feed = new SimplePie();
$feed->set_feed_url($feed_url);
$feed->init();
?>
<?php foreach ($feed->get_items(0, 6) as $item): ?>
<div class="col-lg-2 col-md-2 col-sm-4 col-xs-12 nordic-blog-item">
<?php
$rss_image = ($item->get_item_tags(\'\', \'image\'));
if ($rss_image) { ?>
<a class="recent-blog-img-link" href="<?php print $item->get_permalink(); ?>"><img srcset="<?php print $rss_image[0][\'data\']; ?>"/></a><?php
} else { ?>
<!-- takes the first image of the RSS item content, and displays it -->
<a class="recent-blog-img-link" href="<?php print $item->get_permalink(); ?>"><img srcset="<?php get_first_image_url($item->get_content()); ?>"/></a><?php
}?>
<h3><a href="<?php print $item->get_permalink(); ?>">
<?php print $item->get_title(); ?></a></h3>
<?php echo shorten($item->get_description(), 50); ?><br>
<span class="nordic-date"><?php echo date_i18n(\'F j, Y\', $item->get_date(\'U\')); ?></span>
</div>
<?php endforeach; ?>
最合适的回答,由SO网友:birgire 整理而成
你可以简单地使用fetch_feed()
它实现了自己的扩展SimplePie_Cache
:
$feed = new SimplePie();
...
$feed->set_cache_class( \'WP_Feed_Cache\' );
...
$feed->set_feed_url( $url );
...
$feed->set_cache_duration( apply_filters(
\'wp_feed_cache_transient_lifetime\', 12 * HOUR_IN_SECONDS, $url ) );
缓存提要的
set_transient()
.