默认的最近发布的帖子小部件如何与缓存一起工作?

时间:2012-07-18 作者:Poulomi Nag

我正在尝试基于默认的wordpress recent posts小部件构建一个小部件。在wp包含/默认小部件中。php,我注意到class WP_Widget_Recent_Posts 在函数widget()中,首先在缓存中查找最近的帖子,如果没有找到,则打开输出缓冲,生成结果,然后存储回缓存。由于我使用的是NuSphere IDE,因此DebugBreak(); 在条件内if ( isset( $cache[ $args[\'widget_id\'] ] ) ) (DebugBreak() 导致当前进程中发生断点异常。)但从未执行断点,指出之前未设置缓存。现在不应该是这种情况,因为缓存是由wp_cache_set(\'widget_recent_posts\', $cache, \'widget\');. 这是我第一次进退两难。

其次,如果有人能解释一下输出缓冲是如何工作的,我将不胜感激。原因正如我前面提到的,最近的帖子首先在缓存中查找,如果不存在,则打开输出缓冲(ob_start();), 获取结果,然后ob_get_flush(); 执行方式如下$cache[$args[\'widget_id\']] = ob_get_flush(); 并设置缓存。因此,如果没有输出回显到浏览器,那么小部件实际上如何显示最近的帖子?请帮忙!

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

除非安装了memcached类型的插件,wp_cache_set 将仅在当前脚本的持续时间内存储数据。在同一实例中再次调用或添加小部件(&A);您将看到它利用了缓存。

至于ob_get_flush(), taken from the manual:

刷新输出缓冲区,将其作为字符串返回并关闭输出缓冲

换句话说,它打印and 同时返回缓冲区。

结束