是否所有选项变量都是从数据库中提取的,并在每次请求时加载到缓存中?
是否在每次请求时都将所有选项加载到内存?
是的,有点像。当get_option
调用后,WordPress运行一个名为wp_load_alloptions
, 它要么获取所有自动加载选项的缓存副本,要么将所有这些选项加载到缓存中。然后wp_load_alloptions
返回所有自动加载选项的数组。如果您的选项是自动加载的(在使用add_option
函数),它将是此数组的一部分并返回。
如果您的选项不是自动加载的,WordPress会在缓存中专门查找该选项,并返回该选项所在的值。如果未命中,最后的回退是转到数据库,获取值,将其设置为缓存,然后返回。
最后,如果没有找到任何选项(例如,选项名称无效),WordPress会将该选项的名称存储在一个名为notoptions
. 如果随后调用non选项,WP会首先检查notoptions数组,这样就不会浪费时间检查不存在的内容。
如果你担心打电话get_option
每页加载多次,请勿。WordPress将在第一个get_option
调用,无论其是否自动加载。
退房the source for get_option
看看发生了什么。
不
仅将“自动加载”专门加载的选项设置为true
看见http://codex.wordpress.org/Function_Reference/add_option
因此,如果每个页面都需要该选项,那么在将其添加到db时,请将autoload设置为true。
之后,只需正常使用get\\u选项-wp将处理缓存等。
对
无需将自动加载设置为是/真。默认设置为“是”:http://codex.wordpress.org/Function_Reference/add_option - 最后一个函数参数($自动加载):
此选项是否应该由函数wp\\u load\\u alloptions()自动加载(在每次页面加载时将选项放入对象缓存)?有效值:是或否。默认值:是
但是,如果将其设置为“否”,则该选项不会放在缓存中。