这是创建/使用瞬变的正确用法吗?

时间:2012-10-10 作者:m-torin

我对使用瞬变是个新手。这是创建瞬态并将其从DB中提取而不是使用http api的正确格式吗?

我已经标准化了我的代码片段,以便其他人也可以重复检查他们的代码。。。

function google_transient() {

    $url = \'http://www.google.com\';
    $the_whole_body = wp_remote_retrieve_body( wp_remote_get($url) );

    $transient_name = \'google\';

    // Get any existing copy of our transient data
    if ( false === ( $transient_name = get_transient( $transient_name ) ) ) {

        // It wasn\'t there, so regenerate the data and save the transient
         set_transient( $transient_name, $url, 60*24); // 24 hour cache          
    }

    return $the_whole_body;
}

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

不完全正确:首先获取瞬态的内容,then 执行昂贵的工作来获取外部资源。

function google_transient() {
    $transient_name = \'google\';
    $content        = get_transient( $transient_name );

    // done
    if ( $content )
        return $content;

    $url     = \'http://www.google.com\';
    $content = wp_remote_retrieve_body( wp_remote_get($url) );

    set_transient( $transient_name, $content, DAY_IN_SECONDS ); // 24 hour cache          

    return $content;
}

结束

相关推荐

Transients API and multisite

我们正在使用Atlas HTML站点地图插件,该插件使用transients API缓存站点地图,调用如下:set_transient( \'dmac_html_sitemap\', $output, 60*60*24*7 ); 现在,我们还有一个多站点设置,我想知道瞬态存储在哪里,WP multisite是否将它们分开。它将选项分开,因为每个站点(博客)都有自己的DB表前缀(例如wp\\U 29\\U选项)。我在某个地方读到,瞬态可以用memcached存储,所以我猜后端存储是可插入的。这个问