暂时性的行为不像预期的那样

时间:2017-02-20 作者:Svartbaard

我正在设置一些瞬态,以减少多个自定义WP\\U查询对象的负载。

例如,当我将瞬态设置为在一小时内过期时,对post/自定义post的任何更改都会立即反映在使用瞬态的循环内的结果中。根据我的理解,应该缓存查询,并且更新后的post值应该只在指定的时间之后反映?

瞬态没有再次设置,并且在到期时间方面按预期工作,只是post更改立即可用?

还是我对瞬变的理解完全错误?

下面是一个基本示例:

if ( false === ( $testimonial_loop = get_transient( \'testimonials\' ) ) ) {

        $args = array(
            \'post_type\'     => \'testimonial\',   
        );

        $testimonial_loop = new WP_Query( $args );        

    set_transient( \'testimonials\', $testimonial_loop, 5 * MINUTE_IN_SECONDS );
}

1 个回复
SO网友:Mark Kaplun

经验法则可能是对简单对象(字符串、整数、数组)使用瞬变,因为对象的非序列化结果可能会令人惊讶,除非对象是完全静态的,否则可能会产生副作用。

IIRC,当取消序列化对象时,PHP还将运行其默认构造函数,在您的情况下,该构造函数将再次执行查询,因为从DB检索时正在执行取消序列化操作。

相关推荐

Clear Transients

我已经为我的一个客户构建了一个自定义主题,我正在使用瞬态,以使站点运行更快。一周后,我在wp\\U选项中看到了大量瞬态记录(约360000条记录)。这使我怀疑瞬态不会从数据库中删除。如何删除该记录,以及如何删除?有什么好的教程吗?亲切的问候