Index: nav-menu-template.php
===================================================================
--- nav-menu-template.php	(revision 27034)
+++ nav-menu-template.php	(working copy)
@@ -250,9 +250,17 @@
 	}
 
 	// If the menu exists, get its items.
-	if ( $menu && ! is_wp_error($menu) && !isset($menu_items) )
-		$menu_items = wp_get_nav_menu_items( $menu->term_id, array( 'update_post_term_cache' => false ) );
+	if ( $menu && ! is_wp_error( $menu ) && ! isset( $menu_items ) ) {
+		// Check if we have a cache of this menus items first
+        $menu_items = wp_cache_get( 'wp_nav_menu_' . $args->theme_location );
 
+		// If no cache exists for this menu, fetch it and set the cache in case of repeat use
+        if ( ! $menu_items ) {
+            $menu_items = wp_get_nav_menu_items( $menu->term_id, array( 'update_post_term_cache' => false ) );
+            wp_cache_set( 'wp_nav_menu_' . $args->theme_location, $menu_items );
+        }
+    }
+
 	/*
 	 * If no menu was found:
 	 *  - Fall back (if one was specified), or bail.
