Cache the non-existence of options to prevent redundant queries. props davidhouse. fixes #2268

git-svn-id: http://svn.automattic.com/wordpress/trunk@4798 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
markjaquith 2007-01-25 00:12:08 +00:00
parent ed4186b15f
commit a741e0d350

View File

@ -203,6 +203,10 @@ function is_serialized_string($data) {
function get_option($setting) {
global $wpdb;
// prevent non-existent options from triggering multiple queries
if ( true === wp_cache_get($setting, 'notoptions') )
return false;
$value = wp_cache_get($setting, 'options');
if ( false === $value ) {
@ -215,7 +219,8 @@ function get_option($setting) {
if( is_object( $row) ) { // Has to be get_row instead of get_var because of funkiness with 0, false, null values
$value = $row->option_value;
wp_cache_set($setting, $value, 'options');
} else {
} else { // option does not exist, so we must cache its non-existence
wp_cache_set($setting, true, 'notoptions');
return false;
}
}
@ -274,6 +279,9 @@ function update_option($option_name, $newvalue) {
return true;
}
if ( true === wp_cache_get($option_name, 'notoptions') )
wp_cache_delete($option_name, 'notoptions');
$_newvalue = $newvalue;
$newvalue = maybe_serialize($newvalue);