这是一个完美的用例Transients.
在WordPress中,瞬态是短期数据对象。默认情况下,它们使用WordPress的内置WP\\U Object\\U Cache Object持久化到数据库。但是,您可以使用各种缓存插件(Batcache 是一个优秀的工具,它与Memcached一起工作,将瞬态存储在内存中。
要设置瞬态,请调用set_transient( \'a unique name\', \'the data value\', \'time in seconds until it disappears\' );
您的情况是使用项目对象。下面是您要做的:
function get_project( $user_id ) {
if ( ! $project = get_transient( \'project_\' . $user_id ) ) {
// get_transient() returns false if the value is expired or doesn\'t exist.
$project = new Project( $user_id );
// Set the transient so that it lives for an hour
set_transient( \'project_\' . $user_id, $project, 3600 );
}
return $project;
}
然后,在代码中,可以调用
get_project()
每当需要引用当前项目时。如果它存在于缓存中,您将使用缓存的版本。如果没有,您可以构建一个新实例并将其保存到缓存中。如果要在检索对象后对其进行操作(并将这些操作保留在缓存中),那么还需要做很多事情,但这是我留给您的练习。