对于我的WordPress推荐小部件插件,我已经成功地使用了带有过期日期的瞬态,将页面加载时间减少了0.1到0.5秒。
使用WordPress自己的瞬变是一个救命稻草。根据需要直接打包或使用,然后再次将精力集中在应用程序逻辑上,这样就容易多了。滚动另一个缓存系统是无用的。此外,当您开始使用像W3 Total Cache和WP Super Cache这样的缓存插件时,还有一些额外的缓存连接将进一步加快速度。
此时,过期的瞬态会填满您的wp_options
桌子WordPress的未来版本将更好地处理瞬态清理。现在,请检查https://gist.github.com/ScottPhillips/2907732 用于计划的瞬态清除或将其滚动到应用程序中。
因为我做免费和高级插件,所以我对缓存操作进行了抽象,但没有理由不能将我的抽象移到自己的工作中。
在您的例子中,您谈论的是用户创建数据,您可以将数据创建看作是传递到的小部件或短代码选项testimonialswidget_list
像$atts
在下面。
这个$content = apply_filters( \'testimonials_widget_cache_get\', false, $atts );
正在检查给定的$atts
. 因此,如果传入$atts
已更改,则缓存将失败,并且false
返回,以便创建新的数据集。
线$content = apply_filters( \'testimonials_widget_cache_set\', $content, $atts );
是将新生成的数据保存回缓存以便快速、方便地重用的地方。
The data grabbing 从…起testimonials-widget.php.
public function testimonialswidget_list( $atts ) {
self::add_instance();
$atts = wp_parse_args( $atts, self::get_defaults() );
$atts = Testimonials_Widget_Settings::validate_settings( $atts );
if ( get_query_var( \'paged\' ) ) {
$atts[\'paged\'] = get_query_var( \'paged\' );
} elseif ( get_query_var( \'page\' ) ) {
$atts[\'paged\'] = get_query_var( \'page\' );
} else {
$atts[\'paged\'] = 1;
}
$atts[\'type\'] = \'testimonialswidget_list\';
$content = apply_filters( \'testimonials_widget_cache_get\', false, $atts );
if ( false === $content ) {
$testimonials = self::get_testimonials( $atts );
$content = self::get_testimonials_html( $testimonials, $atts );
$content = apply_filters( \'testimonials_widget_cache_set\', $content, $atts );
}
return $content;
}
The caching operations
add_filter( \'testimonials_widget_cache_get\', array( $this, \'cache_get\' ) );
add_filter( \'testimonials_widget_cache_set\', array( $this, \'cache_set\' ), 10, 2 );
public static function cache_get( $args ) {
$hash = self::create_hash( $args );
$do_cache = apply_filters( \'testimonials_widget_disable_cache\', true );
$no_cache = isset( $args[\'no_cache\'] ) && Testimonials_Widget_Settings::is_true( $args[\'no_cache\'] );
if ( ! $do_cache || $no_cache ) {
delete_transient( $hash );
return false;
}
$data = get_transient( $hash );
return $data;
}
public static function cache_set( $data, $args ) {
$hash = self::create_hash( $args );
set_transient( $hash, $data, self::$cache_period );
return $data;
}
Note 上面的代码是碎片。复制和粘贴到您自己的应用程序将无法立即工作。我建议你看看
self::
和
Testimonials_Widget_Settings::
用作更改代码以满足您的需要的可能点。