Como usar o cache com o simplepie

4

De acordo com os documentos, se você quiser armazenar em cache os resultados de uma busca de feeds RSS com o simplepie, faça isso:

 add_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' );
 $feed = fetch_feed( $feed_url );
 remove_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' );

A minha pergunta é se eu quiser armazenar em cache os resultados de vários URLs de feed (fazendo um loop em um array), eu realmente gostaria de adicionar e remover o filtro para cada passagem do loop (isso não causaria entradas separadas em o cache de cada feed) ou devo fazer isso:

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' );

Francamente (e isso pode ser óbvio), estou confuso sobre como esse armazenamento em cache funciona, já que tudo que vejo são exemplos de um único feed, em vez de vários feeds. Obrigado.

    
por Allen 24.08.2012 / 00:17

1 resposta

3

O exemplo que você usa do códice adiciona e remove (provavelmente não é algo que você quer fazer) e não é muito claro.

Por padrão, o WordPress armazenará em cache o feed por 12 horas usando wp_feed_cache_transient_lifetime , o código real usado pelo WP por 12 horas é $lifetime = 43200

Se você quiser alterar o tempo de cache globalmente para todos os feeds do simplepie, adicione um novo tempo ao filtro

//change cache to 24hrs
add_filter( 'wp_feed_cache_transient_lifetime', create_function('$a', 'return 86400;') );

Se preferir que feeds específicos tenham tempos de cache diferentes, você pode usar o parâmetro $url no filtro.

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;
}
    
por Wyck 25.08.2012 / 03:55