使用永久对象缓存处理陈旧缓存

时间:2020-10-06 作者:Parham

假设您正在执行update_option() 而且,由于一些临时的网络故障,更新Redis/Memcached中的值失败,最终导致特定选项键的缓存陈旧。核心API似乎并不关心wp_cache_set() 他们将继续推进剩下的过程。随后的更新可能会删除或还原DB中的该选项值,这可能会对应用程序产生重大影响,具体取决于该选项值的用途。你是怎么处理的?在大规模WP设置中如何处理此问题?核心有什么可以改进的吗?

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

无论如何,对象缓存都不可靠。

例如,Memcached有自己的系统来清除缓存中的项目:如果它是;“思考”;这太满了,它开始以不可预测的方式清除项目。

众所周知(或应该知道),当您有一个外部对象缓存系统时,调用wp_cache_set 提供缓存设置的零担保。当然wp_cache_get 提供获取缓存的零保修。

这就是为什么core不关心什么wp_cache_get / wp_cache_set 老实说,他们不可能做到这一点:WP允许完全重写缓存函数,所以core完全不知道这些函数实际上做了什么,因为这些函数实际上是由第三方重写的。

另一方面,流行的缓存系统被设计为非常容错的,而大规模的WP设置使用冗余缓存服务器:例如,当四个缓存服务器连接到一个应用程序时,更新失败的可能性很小。最重要的是,这样大规模的WP设置有适当的监控来检查缓存服务器的运行状况。

也就是说,出现问题的可能性从来都不是零。这就是为什么,例如,没有托管提供商会说;正常运行时间100%保证;。

即使删除了cache变量,DB连接中也可能发生故障,同样,只有冗余和监视才能缓解这种情况。

总之,是的,缓存可能会有问题,但不,WP core对此无能为力。冗余和监控有助于将问题发生的可能性降低到一个可接受的水平,在任何情况下,该水平永远不会为零。

相关推荐

Cache of site on browser

我正在制作一个wordpress网站,它包含一个媒体链接。当服务器上的媒体文件发生更改时,不会在我的网站上进行更新。要查看我的新媒体,我必须在浏览器中打开“新建”选项卡,否则它会在媒体缓存到浏览器中时显示以前的结果。即使我刷新页面,它也会显示以前的结果。要查看更新的结果,我只需在“新建”选项卡中打开我的网站。我怎样才能解决这个问题。