GET_BLOBINFO查询是在开始时缓存,还是应该缓存?

时间:2011-07-15 作者:Kyle Hotchkiss

我只是想知道调用get\\u bloginfo太多次是否会损害主题的性能,是否应该将数据放入其自己的var中?

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

get_bloginfo() 没有缓存,反复调用它会损害您的性能,就像您自己创建许多对数据库的调用一样。

这是一个简单的解决方案,通过定义一个包含所有所需信息的数组,并将其保存为wp\\u options表中的一个选项,它不演变任何缓存来最小化数据库和函数调用。

然后在标题中。php全球化一个变量并将该选项分配给它,每个变量都包含在它们中,您可以使用它,类似这样:

在您的功能中。php

function set_get_my_blog_info(){
    $my_blog_info = get_option(\'my_blog_info\');
    if ($my_blog_info === false){
        global $wp_version
        $lang = get_locale();
        $lang = str_replace(\'_\', \'-\', $lang);
        $my_blog_info = array(
            \'url\' => home_url(),
            \'wpurl\' => site_url(),
            \'description\' => get_option(\'blogdescription\'),
            \'rdf_url\' => get_feed_link(\'rdf\'),
            \'rss_url\' => get_feed_link(\'rss\'),
            \'rss2_url\' => get_feed_link(\'rss2\'),
            \'atom_url\' => get_feed_link(\'atom\'),
            \'comments_atom_url\' => get_feed_link(\'comments_atom\'),
            \'comments_rss2_url\' => get_feed_link(\'comments_rss2\'),
            \'pingback_url\' => get_option(\'siteurl\') .\'/xmlrpc.php\',
            \'stylesheet_url\' => get_stylesheet_uri(),
            \'stylesheet_directory\' => get_stylesheet_directory_uri(),
            \'template_url\' => get_template_directory_uri(),
            \'admin_email\' => get_option(\'admin_email\'),
            \'html_type\' => get_option(\'html_type\'),
            \'version\' => $wp_version,
            \'language\' => $lang     
        );
        update_option(\'my_blog_info\',$my_blog_info);
    }
    return $my_blog_info;
}
这将把大多数get\\u bloginfo选项保存到数据库中的一个选项中,并且只运行一次。

然后在标题中。php添加

global $my_blog_info;
$my_blog_info = set_get_my_blog_info();
然后,您可以在主题中的任何位置使用该数组,例如,而不是:

echo get_bloginfo(\'url\');
只需使用阵列:

echo $my_blog_options[\'url\'];

SO网友:Rarst

虽然中没有固有的缓存get_bloginfo(), 它检索的大多数信息来自选项和get_option() 已缓存。

在一个变量中保存需要的值以使用多个时间仍然比函数调用快(在大多数情况下略快),但我不会为显式专用缓存而烦恼。

结束