Index: wp-includes/class-wp-feed-cache-transient.php
===================================================================
--- wp-includes/class-wp-feed-cache-transient.php	(revision 47564)
+++ wp-includes/class-wp-feed-cache-transient.php	(working copy)
@@ -12,7 +12,7 @@
  *
  * @since 2.8.0
  */
-class WP_Feed_Cache_Transient {
+class WP_Feed_Cache_Transient implements SimplePie_Cache_Base {
 
 	/**
 	 * Holds the transient name.
@@ -48,22 +48,14 @@
 	 *
 	 * @param string $location  URL location (scheme is used to determine handler).
 	 * @param string $filename  Unique identifier for cache object.
-	 * @param string $extension 'spi' or 'spc'.
+	 * @param string $extension 'spc' (Feed cache type) or 'spi' (Image cache type)
 	 */
 	public function __construct( $location, $filename, $extension ) {
-		$this->name     = 'feed_' . $filename;
-		$this->mod_name = 'feed_mod_' . $filename;
+		$this->name     = 'feed_' . md5( "$filename:$extension" );
+		$this->mod_name = 'feed_mod_' . md5( "$filename:$extension" );
 
-		$lifetime = $this->lifetime;
-		/**
-		 * Filters the transient lifetime of the feed cache.
-		 *
-		 * @since 2.8.0
-		 *
-		 * @param int    $lifetime Cache duration in seconds. Default is 43200 seconds (12 hours).
-		 * @param string $filename Unique identifier for the cache object.
-		 */
-		$this->lifetime = apply_filters( 'wp_feed_cache_transient_lifetime', $lifetime, $filename );
+		$options = $this->parse_location( $location );
+		$this->lifetime = $options['extras']['lifetime'];
 	}
 
 	/**
@@ -129,4 +121,22 @@
 		delete_transient( $this->mod_name );
 		return true;
 	}
+
+	/**
+	 * Parse location.
+	 *
+	 * @since 5.5.0
+	 *
+	 * @param string $location  URL location (scheme is used to determine handler).
+	 * @return array location parameters
+	 */
+	public function parse_location( $location ) {
+		$params = parse_url( $location );
+		$params['extras'] = array();
+		if ( isset( $params['query'] ) )
+		{
+			parse_str( $params['query'], $params['extras'] );
+		}
+		return $params;
+	}
 }
Index: wp-includes/class-wp-feed-cache.php
===================================================================
--- wp-includes/class-wp-feed-cache.php	(revision 47564)
+++ wp-includes/class-wp-feed-cache.php	(working copy)
@@ -17,6 +17,15 @@
 class WP_Feed_Cache extends SimplePie_Cache {
 
 	/**
+	 * Cache handler class
+	 *
+	 * @var array
+	 */
+	protected static $handlers = array(
+		'wordpress' => 'WP_Feed_Cache_Transient',
+	);
+
+	/**
 	 * Creates a new SimplePie_Cache object.
 	 *
 	 * @since 2.8.0
@@ -26,7 +35,17 @@
 	 * @param string $extension 'spi' or 'spc'.
 	 * @return WP_Feed_Cache_Transient Feed cache handler object that uses transients.
 	 */
-	public function create( $location, $filename, $extension ) {
+	public static function get_handler( $location, $filename, $extension ) {
 		return new WP_Feed_Cache_Transient( $location, $filename, $extension );
 	}
+
+	/**
+	 * Creates a new SimplePie_Cache object.
+	 *
+	 * see get_handler()
+	 */
+	public function create( $location, $filename, $extension ) {
+		return self::get_handler($location, $filename, $extension);
+	}
 }
+
Index: wp-includes/feed.php
===================================================================
--- wp-includes/feed.php	(revision 47564)
+++ wp-includes/feed.php	(working copy)
@@ -760,17 +760,25 @@
 
 	$feed = new SimplePie();
 
-	$feed->set_sanitize_class( 'WP_SimplePie_Sanitize_KSES' );
-	// We must manually overwrite $feed->sanitize because SimplePie's
-	// constructor sets it before we have a chance to set the sanitization class.
-	$feed->sanitize = new WP_SimplePie_Sanitize_KSES();
+	// No need to overwrite $feed->sanitize anymore, SimplePie do it right now
+	$feed->registry->register( 'Sanitize', 'WP_SimplePie_Sanitize_KSES', true );
+	$feed->registry->register( 'File', 'WP_SimplePie_File', true );
+	$feed->registry->register( 'Cache', 'WP_Feed_Cache', true );
 
-	$feed->set_cache_class( 'WP_Feed_Cache' );
-	$feed->set_file_class( 'WP_SimplePie_File' );
+	/**
+	 * Filters the transient lifetime of the feed cache.
+	 *
+	 * @since 2.8.0
+	 *
+	 * @param int    $lifetime Cache duration in seconds. Default is 12 hours.
+	 * @param string $filename Unique identifier for the cache object.
+	 */
+	$lifetime = apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url );
 
+	$feed->set_cache_duration( $lifetime );
+	$feed->set_cache_location( 'wordpress://transient?lifetime=' . $lifetime );
 	$feed->set_feed_url( $url );
-	/** This filter is documented in wp-includes/class-wp-feed-cache-transient.php */
-	$feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $url ) );
+
 	/**
 	 * Fires just before processing the SimplePie feed object.
 	 *
