是否在每次请求时都将所有选项加载到内存?

时间:2011-09-05 作者:rsman

是否所有选项变量都是从数据库中提取的,并在每次请求时加载到缓存中?

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

是的,有点像。当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 看看发生了什么。

SO网友:anmari

仅将“自动加载”专门加载的选项设置为true

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

因此,如果每个页面都需要该选项,那么在将其添加到db时,请将autoload设置为true。

之后,只需正常使用get\\u选项-wp将处理缓存等。

SO网友:Toni Petrov

无需将自动加载设置为是/真。默认设置为“是”:http://codex.wordpress.org/Function_Reference/add_option - 最后一个函数参数($自动加载):

此选项是否应该由函数wp\\u load\\u alloptions()自动加载(在每次页面加载时将选项放入对象缓存)?有效值:是或否。默认值:是

但是,如果将其设置为“否”,则该选项不会放在缓存中。

结束

相关推荐

我应该在主题中的哪里更新_Options?

我正在设计一个主题,其中主页(即。is_home()) 应该只显示最新的博客文章。我想做点什么$wp_query->update_option(\'posts_per_page\', 1) 每次我在主页上。所有其他显示帖子(如归档)的页面都应该遵循用户定义的选项。每次都这么做似乎有点不必要,因为选项应该只设置一次,对吗?是否可以在循环中忽略posts_per_page 和力have_posts() 只设一个职位?一般来说,这种“一次性设置”的东西应该去哪里?我真的不认为它应该是一个插件,因为它是特定