页面加载是一个请求,由软件运行,给出响应并关闭执行。后来,Ajax是另一个完全分离的请求。如果希望对象在请求之间始终可用,则只有两个选项:使用transients API 或使用object cache API 与缓存插件结合使用(默认情况下,对象缓存api不是持久的)。
瞬态API的一个非常基本的示例:
if( false === ( $my_object = get_transient(\'transient_object_name\') ) ) {
// Build your $my_object here
// For example
$args= array();
$query = new WP_Query( $args );
$my_object = $query->get_results();
// Store $my_object in a transient
set_transient(\'transient_object_name\', $my_object );
}
然后,稍后,您可以使用
get_transient(\'transient_object_name\')
获取之前存储的瞬态。
瞬态API将对象存储在数据库(选项表)中,以便在后续请求中获取该对象,而无需新的数据库调用(一个数据库调用获取瞬态对象,但不是构建对象的完整操作)。
对象缓存API非常相似,但默认情况下不是持久的。它将缓存的对象存储在内存中,而不是存储在数据库中,并且仅为当前请求缓存对象。要使其在分离的请求之间持久化,需要使用一些持久缓存插件,如W3TC。
如果有一个持久缓存插件可用,瞬态API将停止在数据库中存储瞬态,并与对象缓存API完全相同,存储在内存中,但存储在内存中的数据现在在这两种情况下都是持久的。