是否根据每个请求将所有选项都加载到内存中?


25

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

Answers:


24

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

如果您的选项未自动加载,则WordPress然后会在该选项专用的缓存中查找并返回值(如果存在)。如果未命中,则最后的后备方法是进入数据库,获取值,将其设置为高速缓存,然后将其返回。

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

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

查看源代码get_option以了解发生了什么。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.