WordPress缓存是否为多站点网络中的所有博客共享?

时间:2017-04-30 作者:Philipp

当我做wp_cache_set( \'some-item\', $item, \'my-group\' ) 在多站点网络的任何站点上some-item 在其他博客上可用,还是每个博客都有自己的“缓存域”?

如果缓存只是当前博客的本地缓存:有没有一种简单的方法可以共享网络范围的缓存?

在google或WordPress文档中找不到有关此的任何信息。。。

对于这个问题,我们假设object cache plugin 或安装了drop-in。(我知道现成的wp\\u cache\\u set函数仅在当前请求期间缓存数据)

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

视情况而定。

一般来说,对象缓存(至少基于APCu和memcache)是全局的,并且对整个服务器是全局的,因此可以将问题重新表述为“哪些缓存密钥使用基于子站点的唯一字符串作为前缀/后缀”。答案如下所示https://developer.wordpress.org/reference/classes/wp_object_cache/set/ wordpress core为“非全局组”添加了一个前缀,其中全局组IIRC是用户数据相关组和网络设置组。

因此,在良好的对象缓存实现中,用户数据和网络选项缓存将在所有子站点之间“共享”,而后期缓存等将“本地缓存”。

这就引出了一个问题:非核心my-group. 一种选择是,在计算要使用的缓存键时,您将根据博客id添加(或不添加)前缀,或者添加my-group 作为一个全球集团wp_cache_add_global_groups 如果您确实希望能够访问不同子站点上的相同缓存信息

相关推荐

Remove node from multisites?

我有一个如下所示的功能,其目标是从“我的网站”下拉列表中删除新帖子并管理评论。如果我将{$node\\u id}替换为blogs id,这会很好地工作。但我希望这适用于“我的站点”列表中的所有多站点。这意味着我需要获得所有的博客id。这是我已经取得的成就,但它不起作用。add_action( \'admin_bar_menu\', \'remove_nodes_from_mysites\', 999 ); function remove_nodes_from_mysites( $wp_admin_