W3TC激活时临时API出现问题

时间:2013-07-30 作者:He Shiming

我正在Wordpress 3.5.2上使用W3 Total Cache 0.9.2.11。我对瞬态API和w3tc的对象缓存设置有问题。

当我使用memcached激活“对象缓存”(其他设置为默认设置)时,瞬态API停止工作。其行为是:当我在set\\u transient()之后的过期时间内调用get\\u transient()时,我得到null。

当“对象缓存”被激活时,行为是一致的,当它被停用时,它会完美地工作。文档中没有提到set_transient 调用可能失败。

我尝试了调试模式w3tc对象缓存。该页面显示了大约1000到2000个对象缓存条目。我不太明白每个条目的名称,但我的瞬时值不在那里。

我想知道我是否忽略了任何设置?这是什么原因?

Update:我还注意到刷新页面会get_transient 返回所需的输出。它是这样的:

首先set_transient, get_transient 返回null秒set_transient, get_transient 返回第一个值,第三个值set_transient, get_transient 返回第二个值set_transient 是否需要更长的时间才能完成,是否有任何关于w3tc是否已使此调用异步的参考?如果是,我该如何应对?

3 个回复
SO网友:doublesharp

我也遇到了同样的问题,并通过扩展Andy的解决方案得以纠正,但我只需要强制值,尤其是不要使用W3TC的对象缓存。我尝试使用APC、Memcached以及Disk for the cache,结果相同。缓存当然有助于提高性能,而我遇到问题的代码不是我自己的(插件),因此内联修改它不是一个选项。。。。输入筛选器/操作。我能够通过使用以下方法使其工作,替换TRANSIENT_KEY 使用要禁用缓存的键:

global $_wp_using_ext_object_cache_prev;
function disable_linked_in_cached($value=null){
    global $_wp_using_ext_object_cache;
    $_wp_using_ext_object_cache_prev = $_wp_using_ext_object_cache;
    $_wp_using_ext_object_cache = false;
    return $value;
}
add_filter( \'pre_set_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );
add_filter( \'pre_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );
add_action( \'delete_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );

function enable_linked_in_cached($value=null){
    global $_wp_using_ext_object_cache;
    $_wp_using_ext_object_cache = $_wp_using_ext_object_cache_prev;
    return $value;
}
add_action( \'set_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );
add_filter( \'transient_TRANSIENT_KEY\', \'enable_linked_in_cached\' );
add_action( \'deleted_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );

SO网友:Artem Russakovskii

以下是W3TC中当前对象缓存的最大问题,以及解决方案:http://wordpress.org/support/topic/self-diagnosed-and-fixed-w3-total-cache-bug-in-faulty-object-caching

SO网友:Andy Adams

我遇到了这个问题,这确实是由于W3缓存造成的。我推导出了一种在执行代码时暂时关闭对象缓存的方法,这种方法适用于我的用例。代码如下所示:

// We need to turn off the object cache temporarily while we deal with transients,
// as the W3 Total Cache conflicts with our work
global $_wp_using_ext_object_cache;

$_wp_using_ext_object_cache_previous = $_wp_using_ext_object_cache;
$_wp_using_ext_object_cache = false;

// ...do some work with transients here...

$_wp_using_ext_object_cache = $_wp_using_ext_object_cache_previous;
WordPress检查$_wp_using_ext_object_cache 为了确定是否应该使用对象缓存,所以我们在工作时暂时禁用它。希望对别人有帮助!

结束

相关推荐

Wp_cache应该是如何工作的,它是否有助于提高性能?

我正在编写我的最近评论小部件,并使用$wpdb->get\\u results,我不想使用缓存,这样它就不会在每次加载页面时都执行查询,所以我使用了:$comments = wp_cache_get(\'mycomments\'); if ($comments == false) { $query = //some sql stuff $comments = $wpdb->get_results($query); wp_cache_set

W3TC激活时临时API出现问题 - 小码农CODE - 行之有效找到问题解决它

W3TC激活时临时API出现问题

时间:2013-07-30 作者:He Shiming

我正在Wordpress 3.5.2上使用W3 Total Cache 0.9.2.11。我对瞬态API和w3tc的对象缓存设置有问题。

当我使用memcached激活“对象缓存”(其他设置为默认设置)时,瞬态API停止工作。其行为是:当我在set\\u transient()之后的过期时间内调用get\\u transient()时,我得到null。

当“对象缓存”被激活时,行为是一致的,当它被停用时,它会完美地工作。文档中没有提到set_transient 调用可能失败。

我尝试了调试模式w3tc对象缓存。该页面显示了大约1000到2000个对象缓存条目。我不太明白每个条目的名称,但我的瞬时值不在那里。

我想知道我是否忽略了任何设置?这是什么原因?

Update:我还注意到刷新页面会get_transient 返回所需的输出。它是这样的:

首先set_transient, get_transient 返回null秒set_transient, get_transient 返回第一个值,第三个值set_transient, get_transient 返回第二个值set_transient 是否需要更长的时间才能完成,是否有任何关于w3tc是否已使此调用异步的参考?如果是,我该如何应对?

3 个回复
SO网友:doublesharp

我也遇到了同样的问题,并通过扩展Andy的解决方案得以纠正,但我只需要强制值,尤其是不要使用W3TC的对象缓存。我尝试使用APC、Memcached以及Disk for the cache,结果相同。缓存当然有助于提高性能,而我遇到问题的代码不是我自己的(插件),因此内联修改它不是一个选项。。。。输入筛选器/操作。我能够通过使用以下方法使其工作,替换TRANSIENT_KEY 使用要禁用缓存的键:

global $_wp_using_ext_object_cache_prev;
function disable_linked_in_cached($value=null){
    global $_wp_using_ext_object_cache;
    $_wp_using_ext_object_cache_prev = $_wp_using_ext_object_cache;
    $_wp_using_ext_object_cache = false;
    return $value;
}
add_filter( \'pre_set_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );
add_filter( \'pre_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );
add_action( \'delete_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );

function enable_linked_in_cached($value=null){
    global $_wp_using_ext_object_cache;
    $_wp_using_ext_object_cache = $_wp_using_ext_object_cache_prev;
    return $value;
}
add_action( \'set_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );
add_filter( \'transient_TRANSIENT_KEY\', \'enable_linked_in_cached\' );
add_action( \'deleted_transient_TRANSIENT_KEY\', \'disable_linked_in_cached\' );

SO网友:Artem Russakovskii

以下是W3TC中当前对象缓存的最大问题,以及解决方案:http://wordpress.org/support/topic/self-diagnosed-and-fixed-w3-total-cache-bug-in-faulty-object-caching

SO网友:Andy Adams

我遇到了这个问题,这确实是由于W3缓存造成的。我推导出了一种在执行代码时暂时关闭对象缓存的方法,这种方法适用于我的用例。代码如下所示:

// We need to turn off the object cache temporarily while we deal with transients,
// as the W3 Total Cache conflicts with our work
global $_wp_using_ext_object_cache;

$_wp_using_ext_object_cache_previous = $_wp_using_ext_object_cache;
$_wp_using_ext_object_cache = false;

// ...do some work with transients here...

$_wp_using_ext_object_cache = $_wp_using_ext_object_cache_previous;
WordPress检查$_wp_using_ext_object_cache 为了确定是否应该使用对象缓存,所以我们在工作时暂时禁用它。希望对别人有帮助!

相关推荐

Nginx+WordPress+HHVM:为什么Batcache不能工作?瓦尼什会提供更多帮助吗?

我听说了很多关于HHVM, 所以我用Nginx(带Pagespeed模块)和HHVM设置了WordPress博客的副本(在另一个域上)。现在,好处是显而易见的:在相同的配置上,加载时间要快两到三倍。我正在努力加快速度,我还安装了Memcached and Batcache. 我已经安装了memcached 包,已复制对象缓存。php(Pastebin) 在WordPress博客的根文件夹上,然后我安装了Batcache插件并复制了高级缓存。php(Pastebin) 将文件保存到wp content文件夹