如何在简单应用程序中使用缓存

时间:2012-08-23 作者:Allen

根据这些文档,如果您想缓存使用simplepie获取RSS提要的结果,可以执行以下操作:

 add_filter( \'wp_feed_cache_transient_lifetime\' , \'return_7200\' );
 $feed = fetch_feed( $feed_url );
 remove_filter( \'wp_feed_cache_transient_lifetime\' , \'return_7200\' );
我的问题是,如果我想缓存多个提要URL的结果(通过在数组中循环),我真的想为每次循环添加和删除过滤器(这不会导致每个提要在缓存中有单独的条目),还是应该这样做:

add_filter( \'wp_feed_cache_transient_lifetime\' , \'return_7200\' );

for ($i=.......){
  $feed = fetch_feed( $feed_url );
}

 remove_filter( \'wp_feed_cache_transient_lifetime\' , \'return_7200\' );
坦率地说(这可能是显而易见的),我对这种缓存是如何工作的感到困惑,因为我所看到的只是单个提要的示例,而不是多个提要的示例。谢谢

1 个回复
SO网友:Wyck

您在codex中使用的示例添加和删除了它(可能不是您想要做的事情),但不是很清楚。

默认情况下,WordPress将使用wp_feed_cache_transient_lifetime, WP在12小时内使用的实际代码为$lifetime = 43200

如果要全局更改所有simplepie提要的缓存时间,可以向筛选器添加新时间,

//change cache to 24hrs
add_filter( \'wp_feed_cache_transient_lifetime\', create_function(\'$a\', \'return 86400;\') );
如果希望特定提要具有不同的缓存时间,可以使用$url 过滤器中的参数。

add_filter( \'wp_feed_cache_transient_lifetime\', \'change_feed_speed\' );

function change_feed_speed( $lifetime, $url ) {

    if( \'http://mysite.org/some-feed.rss\' == $url )
        return 86400;

    return $lifetime;
}

结束

相关推荐

Is the object cached?

我有一个函数来实例化一个类,以提供对其他函数的var访问。function my_data(){ global $post,$the_data; $postid = get_the_ID(); $the_data = new MY_Class ( $postid ); return $the_data; } 每个帖子都会调用这个函数,每当需要MY\\u类中的var时,每个帖子都会多次调用它。数据保存在WordPress Posteta中,并在My\\u类中