问题描述

是否从数据库中提取所有选项变量,并在每个请求上加载缓存?

最佳解决方案

是的,有的。当进行 get_option 调用时,WordPress 将运行一个名为 wp_load_alloptions 的函数,该函数可以获取所有自动加载选项的缓存副本,也可以将所有这些选项加载到缓存中。然后 wp_load_alloptions 返回所有自动加载选项的数组。如果您的选项是自动加载的 (在使用 add_option 功能时指定),它将成为此数组的一部分并返回。

如果您的选项不是自动加载的,WordPress 则会专门针对该选项查看缓存,并返回该值。如果没有,最后的回退是去数据库,获取值,设置缓存然后返回。

最后,如果没有找到任何选项 (例如,选项名称无效),WordPress 将该选项的名称存储在名为 notoptions 的缓存数组中。如果对 non-option 进行后续调用,WP 将首先检查 notoptions 数组,这样就不会浪费时间检查那些不在的内容。

如果您担心每次加载多次调用 get_option,请不要。 WordPress 将在第一个 get_option 调用后缓存选项值,无论其是否自动加载。

查看 get_option 的来源,看看发生了什么。

次佳解决方案

没有,

只有专门加载 autoload 的选项设置为 true

http://codex.wordpress.org/Function_Reference/add_option

因此,如果它是每个页面上需要的选项,当将其添加到数据库时,请设置 autoload = true 。

之后,只要使用 get_option,wp 就会处理缓存等

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。