Index: wp-includes/post-thumbnail-template.php
===================================================================
--- wp-includes/post-thumbnail-template.php	(revision 17836)
+++ wp-includes/post-thumbnail-template.php	(working copy)
@@ -48,6 +48,36 @@
 }
 
 /**
+ * Update cache for thumbnails in the current loop
+ *
+ * @sicne 3.2
+ */
+function update_post_thumbnail_cache() {
+	global $wp_query;
+
+	if ( $wp_query->thumbnails_cached )
+		return;
+
+	$thumb_ids = array();
+	foreach ( $wp_query->posts as $post ) {
+		if ( $id = get_post_thumbnail_id( $post->ID ) )
+			$thumb_ids[] = $id;
+	}
+
+	if ( ! empty ( $thumb_ids ) ) {
+		get_posts( array(
+				'update_post_term_cache' => false,
+				'include' => $thumb_ids,
+				'post_type' => 'attachment',
+				'post_status' => 'inherit',
+				'nopaging' => true
+		) );
+	}
+
+	$wp_query->thumbnails_cached = true;
+}
+
+/**
  * Retrieve Post Thumbnail.
  *
  * @since 2.9.0
@@ -62,6 +92,8 @@
 	$size = apply_filters( 'post_thumbnail_size', $size );
 	if ( $post_thumbnail_id ) {
 		do_action( 'begin_fetch_post_thumbnail_html', $post_id, $post_thumbnail_id, $size ); // for "Just In Time" filtering of all of wp_get_attachment_image()'s filters
+		if ( in_the_loop() )
+			update_post_thumbnail_cache();
 		$html = wp_get_attachment_image( $post_thumbnail_id, $size, false, $attr );
 		do_action( 'end_fetch_post_thumbnail_html', $post_id, $post_thumbnail_id, $size );
 	} else {
Index: wp-includes/query.php
===================================================================
--- wp-includes/query.php	(revision 17836)
+++ wp-includes/query.php	(working copy)
@@ -1258,6 +1258,15 @@
 	var $query_vars_changed = true;
 
 	/**
+	 * Set if post thumbnails are cached
+	 *
+	 * @since 3.2
+	 * @access public
+	 * @var bool
+	 */
+	 var $thumbnails_cached = false;
+
+	/**
 	 * Resets query flags to false.
 	 *
 	 * The query flags are what page info WordPress was able to figure out.
