Index: wp-includes/update.php
===================================================================
--- wp-includes/update.php	(revision 8512)
+++ wp-includes/update.php	(working copy)
@@ -101,35 +101,41 @@
 		require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
 	}
 
-	$plugins = get_plugins();
-	$active  = get_option( 'active_plugins' );
-
-	$new_option = '';
-	$new_option->last_checked = time();
-
 	$plugin_changed = false;
-	foreach ( $plugins as $file => $p ) {
-		$new_option->checked[ $file ] = $p['Version'];
+	if ( strpos( $_SERVER['PHP_SELF'], 'plugins.php' ) !== false ) {
+		$plugins = get_plugins();
+		$active  = get_option( 'active_plugins' );
 
-		if ( !isset( $current->checked[ $file ] ) ) {
-			$plugin_changed = true;
-			continue;
-		}
+		$new_option = '';
+		$new_option->last_checked = time();
 
-		if ( strval($current->checked[ $file ]) !== strval($p['Version']) )
-			$plugin_changed = true;
-	}
-
-	foreach ( (array) $current->response as $plugin_file => $update_details ) {
-		if ( ! isset($plugins[ $plugin_file ]) ) {
-			$plugin_changed = true;
+		$plugin_changed = false;
+		foreach ( $plugins as $file => $p ) {
+			$new_option->checked[ $file ] = $p['Version'];
+	
+			if ( !isset( $current->checked[ $file ] ) ) {
+				$plugin_changed = true;
+				continue;
+			}
+	
+			if ( strval($current->checked[ $file ]) !== strval($p['Version']) )
+				$plugin_changed = true;
 		}
+	
+		foreach ( (array) $current->response as $plugin_file => $update_details ) {
+			if ( ! isset($plugins[ $plugin_file ]) ) {
+				$plugin_changed = true;
+			}
+		}
 	}
 
 	// Bail if we've checked in the last 12 hours and if nothing has changed
 	if ( $time_not_changed && !$plugin_changed )
 		return false;
 
+	// get the plugins if we have not already
+	if (!$plugins) $plugins = get_plugins();
+	
 	$to_send->plugins = $plugins;
 	$to_send->active = $active;
 	$send = serialize( $to_send );

