问题描述
是否从数据库中提取所有选项变量,并在每个请求上加载缓存?
最佳解决方案
是的,有的。当进行 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。