Index: wp-admin/includes/ajax-actions.php
===================================================================
--- wp-admin/includes/ajax-actions.php	(revision 24262)
+++ wp-admin/includes/ajax-actions.php	(working copy)
@@ -2209,6 +2209,7 @@
 				 ( 0 != $right_handle_at && $count > ( $right_handle_at - 2 ) ) ) ) {
 				$all_the_revisions[] = array (
 					'ID' => $revision->ID,
+					'timestamp' => strtotime($revision->post_modified)
 				);
 				continue;
 			}
@@ -2217,6 +2218,7 @@
 				 ( 0 != $left_handle_at && $count < $right_handle_at ) ) ) {
 				$all_the_revisions[] = array (
 					'ID' => $revision->ID,
+					'timestamp' => strtotime($revision->post_modified)
 				);
 				continue;
 			}
@@ -2305,6 +2307,7 @@
 				'restoreLink'  => urldecode( $restore_link ),
 				'previousID'   => $previous_revision_id,
 				'isCurrent'    => $is_current_revision,
+				'timestamp'    => strtotime($revision->post_modified)
 			);
 		}
 		$previous_revision_id = $revision->ID;
Index: wp-admin/js/revisions.js
===================================================================
--- wp-admin/js/revisions.js	(revision 24262)
+++ wp-admin/js/revisions.js	(working copy)
@@ -68,6 +68,16 @@
 					self.rightDiff = self.revisions.indexOf( revision ) + 1;
 			});
 
+			// load revisions in order of their chronological closeness to the handles
+			var left  = this.singleRevision ? 0 : self.revisions.models[self.leftDiff -1].get('timestamp'),
+				right = self.revisions.models[self.rightDiff-1].get('timestamp');
+			revisionsToLoad = _.sortBy( revisionsToLoad, function( model ) {
+				var t = model.get('timestamp'),
+					y = Math.abs( t - right ),
+					x = Math.abs( t - left );
+				return _.min([x,y]);
+			});
+
 			_.each( revisionsToLoad, function( revision ) {
 					_.delay( function() {
 						revision.fetch( {
@@ -793,6 +803,10 @@
 			});
 		},
 
+		comparator: function(item) {
+			return item.get('timestamp');
+		},
+
 		url: function() {
 			return ajaxurl +
 				'?action=revisions-data' +
