diff --git a/mollom.module b/mollom.module
index 5ec826e..2da6ea3 100644
--- a/mollom.module
+++ b/mollom.module
@@ -1260,6 +1260,7 @@ function _mollom_status($reset = FALSE) {
     'keys' => FALSE,
     'keys valid' => FALSE,
   ));
+  $current_status = $status;
 
   $mollom = mollom();
 
@@ -1283,8 +1284,12 @@ function _mollom_status($reset = FALSE) {
     $status['servers'] = !empty($servers);
   }
 
-  // Update stored status upon reset.
-  if ($reset) {
+  // Update stored status upon reset, but only if the status changed, as a
+  // variable_set() invalidates the variable cache.
+  // Requires array_diff_assoc() instead of ($current_status != $status), since
+  // 'keys valid' may be an error code integer, which is equal to TRUE, so a
+  // type-agnostic strict comparison is required.
+  if ($reset && array_diff_assoc($current_status, $status)) {
     variable_set('mollom_status', $status);
   }
 
