diff --git src/wp-includes/bookmark.php src/wp-includes/bookmark.php
index 1e178f4..69eaa15 100644
--- src/wp-includes/bookmark.php
+++ src/wp-includes/bookmark.php
@@ -128,7 +128,11 @@ function get_bookmarks( $args = '' ) {
 	$r = wp_parse_args( $args, $defaults );
 
 	$key = md5( serialize( $r ) );
-	if ( $cache = wp_cache_get( 'get_bookmarks', 'bookmark' ) ) {
+	if ( 'rand' == $orderby ) {
+		if ( $results = wp_cache_get( $key, 'get_bookmarks_rand' ) ) {
+			return apply_filters( 'get_bookmarks', $results, $r );
+		}
+	} elseif ( $cache = wp_cache_get( 'get_bookmarks', 'bookmark' ) ) {
 		if ( is_array( $cache ) && isset( $cache[ $key ] ) ) {
 			$bookmarks = $cache[ $key ];
 			/**
@@ -285,8 +289,20 @@ function get_bookmarks( $args = '' ) {
 
 	$results = $wpdb->get_results( $query );
 
-	$cache[ $key ] = $results;
-	wp_cache_set( 'get_bookmarks', $cache, 'bookmark' );
+	if ( 'rand()' == $orderby ) {
+		/**
+		 * Filter the expiration time of bookmarks when randomly ordered.
+		 *
+		 * @since 4.4.0
+		 *
+		 * @param $rand_ttl Expiration time, in seconds. Default 60.
+		 */
+		$rand_ttl = apply_filters( 'get_bookmarks_rand_ttl', MINUTE_IN_SECONDS );
+		wp_cache_set( $key, $results, 'get_bookmarks_rand', $rand_ttl );
+	} else {
+		$cache[ $key ] = $results;
+		wp_cache_set( 'get_bookmarks', $cache, 'bookmark' );
+	}
 
 	/** This filter is documented in wp-includes/bookmark.php */
 	return apply_filters( 'get_bookmarks', $results, $r );
