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

git-svn-id: https://develop.svn.wordpress.org/trunk@4798 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Mark Jaquith 2007-01-25 00:12:08 +00:00
parent e03fb2e4eb
commit 58ee51abe9
1 changed files with 9 additions and 1 deletions

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);