Index: src/wp-admin/includes/schema.php
===================================================================
--- src/wp-admin/includes/schema.php	(revision 44401)
+++ src/wp-admin/includes/schema.php	(working copy)
@@ -576,18 +576,9 @@
 			$autoload = 'yes';
 		}
 
-		if ( is_array( $value ) ) {
-			$value = serialize( $value );
-		}
-		if ( ! empty( $insert ) ) {
-			$insert .= ', ';
-		}
-		$insert .= $wpdb->prepare( '(%s, %s, %s)', $option, $value, $autoload );
+		add_option( $option, $value, '', $autoload );
 	}
 
-	if ( ! empty( $insert ) ) {
-		$wpdb->query( "INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES " . $insert ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
-	}
 
 	// In case it is set, but blank, update "home".
 	if ( ! __get_option( 'home' ) ) {
Index: src/wp-includes/class-wp-site.php
===================================================================
--- src/wp-includes/class-wp-site.php	(revision 44401)
+++ src/wp-includes/class-wp-site.php	(working copy)
@@ -310,23 +310,19 @@
 	 * @return stdClass A raw site object with all details included.
 	 */
 	private function get_details() {
-		$details = wp_cache_get( $this->blog_id, 'site-details' );
+		$site_details = array( 'blogname', 'siteurl', 'post_count', 'home' );
 
-		if ( false === $details ) {
+		// Create a raw copy of the object for backwards compatibility with the filter below.
+		$details = new stdClass();
+		foreach ( get_object_vars( $this ) as $key => $value ) {
+			$details->$key = $value;
+		}
 
-			switch_to_blog( $this->blog_id );
-			// Create a raw copy of the object for backwards compatibility with the filter below.
-			$details = new stdClass();
-			foreach ( get_object_vars( $this ) as $key => $value ) {
-				$details->$key = $value;
+		foreach ( $site_details as $site_detail ) {
+			$details->$site_detail = get_site_meta( $this->blog_id, $site_detail, true );
+			if ( false === $details->$site_detail ){
+				$details->$site_detail = get_blog_option( $this->blog_id, $site_detail );
 			}
-			$details->blogname   = get_option( 'blogname' );
-			$details->siteurl    = get_option( 'siteurl' );
-			$details->post_count = get_option( 'post_count' );
-			$details->home       = get_option( 'home' );
-			restore_current_blog();
-
-			wp_cache_set( $this->blog_id, $details, 'site-details' );
 		}
 
 		/** This filter is documented in wp-includes/ms-blogs.php */
Index: src/wp-includes/ms-blogs.php
===================================================================
--- src/wp-includes/ms-blogs.php	(revision 44401)
+++ src/wp-includes/ms-blogs.php	(working copy)
@@ -1112,6 +1112,7 @@
 				'upload_path' => get_network_option( $network->id, 'ms_files_rewriting' ) ? UPLOADBLOGSDIR . "/{$site->id}/files" : get_blog_option( $network->site_id, 'upload_path' ),
 				'blog_public' => (int) $site->public,
 				'WPLANG'      => get_network_option( $network->id, 'WPLANG' ),
+				'post_count'  => 0,
 			),
 			$args['options']
 		)
@@ -2309,3 +2310,20 @@
 
 	update_blog_option( $site_id, 'blog_public', $public );
 }
+
+
+function update_option_to_meta( $value, $old_value, $option ){
+	update_site_meta( get_current_blog_id(), $option, $value, $old_value );
+}
+
+function add_option_to_meta( $option, $value ){
+	add_site_meta( get_current_blog_id(), $option, $value );
+}
+
+function delete_option_to_meta( $option ){
+	delete_site_meta( get_current_blog_id(), $option );
+}
+
+function load_from_blog_meta( $value, $option ){
+	return get_site_meta( get_current_blog_id(), $option, true );
+}
Index: src/wp-includes/ms-default-filters.php
===================================================================
--- src/wp-includes/ms-default-filters.php	(revision 44401)
+++ src/wp-includes/ms-default-filters.php	(working copy)
@@ -103,10 +103,13 @@
 remove_filter( 'option_home', '_config_wp_home' );
 
 // Some options changes should trigger site details refresh.
-add_action( 'update_option_blogname', 'clean_site_details_cache', 10, 0 );
-add_action( 'update_option_siteurl', 'clean_site_details_cache', 10, 0 );
-add_action( 'update_option_post_count', 'clean_site_details_cache', 10, 0 );
-add_action( 'update_option_home', 'clean_site_details_cache', 10, 0 );
+$site_details = array( 'blogname', 'siteurl', 'post_count', 'home' );
+foreach( $site_details as $site_detail ){
+	add_action( 'update_option_' . $site_detail, 'update_option_to_meta', 8, 3 );
+	add_action( 'add_option_' . $site_detail, 'add_option_to_meta', 8, 2 );
+	add_action( 'delete_option_' . $site_detail, 'delete_option_to_meta', 8, 1 );
+	add_filter( 'pre_option_' . $site_detail, 'load_from_blog_meta', 8, 2 );
+}
 
 // If the network upgrade hasn't run yet, assume ms-files.php rewriting is used.
 add_filter( 'default_site_option_ms_files_rewriting', '__return_true' );
