diff --git a/NEWS.md b/NEWS.md
index cb2d7abbadd6279c7e66179a7748f4bdb7cbe970..e0a818bade745d34877d39d0a327d6c22bdfc6d4 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -54,6 +54,22 @@ be used multiple times on the same table to add more than one category field.
 The options array (the fourth parameter) now can contain a 'label' to set a
 custom label for each category field.
 
+
+#### Caching
+
+* Caching behaviour by newly introduced grouping parameter
+
+Most caches used in TYPO3 CMS are now based on the FLOW caching framework. The
+caching framework is now used for class loading, Extbase-internals, most page-
+related caches, and for the configuration cache. Some caches are system-related
+caches that only need to be flushed and rebuilt when the core is updated or
+an extension is (un-)installed. **The functionality of "Clear all caches" thus
+does not include the system-related caches anymore** - these can be cleared by
+"Clear configuration cache" or DataHandler->clear_cacheCmd('system') if the
+user has the according permissions. Each cache can be configured to be in one or
+multiple groups in its configuration parameters. Custom groups can be defined
+and cleared manually.
+
 ### Frontend
 
 * Minor API change in \TYPO3\CMS\Frontend\ContentObjectRenderer->getTreeList()
diff --git a/typo3/sysext/core/Classes/Cache/CacheManager.php b/typo3/sysext/core/Classes/Cache/CacheManager.php
index 469d499b11c248376d94ed921b8374deb0de4725..a045a250950da4969763a69cc5252beb212be83d 100644
--- a/typo3/sysext/core/Classes/Cache/CacheManager.php
+++ b/typo3/sysext/core/Classes/Cache/CacheManager.php
@@ -49,13 +49,24 @@ class CacheManager implements \TYPO3\CMS\Core\SingletonInterface {
 	 */
 	protected $cacheConfigurations = array();
 
+	/**
+	 * Used to flush caches of a specific group
+	 * is an associative array containing the group identifier as key
+	 * and the identifier as an array within that group
+	 * groups are set via the cache configurations of each cache.
+	 *
+	 * @var array
+	 */
+	protected $cacheGroups = array();
+
 	/**
 	 * @var array Default cache configuration as fallback
 	 */
 	protected $defaultCacheConfiguration = array(
 		'frontend' => 'TYPO3\\CMS\\Core\\Cache\\Frontend\\VariableFrontend',
 		'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\Typo3DatabaseBackend',
-		'options' => array()
+		'options' => array(),
+		'groups' => array('all')
 	);
 
 	/**
@@ -149,6 +160,45 @@ class CacheManager implements \TYPO3\CMS\Core\SingletonInterface {
 		}
 	}
 
+	/**
+	 * Flushes all registered caches of a specific group
+	 *
+	 * @param string $groupIdentifier
+	 * @return void
+	 * @api
+	 */
+	public function flushCachesInGroup($groupIdentifier) {
+		$this->createAllCaches();
+		if (isset($this->cacheGroups[$groupIdentifier])) {
+			foreach ($this->cacheGroups[$groupIdentifier] as $cacheIdentifier) {
+				if (isset($this->caches[$cacheIdentifier])) {
+					$this->caches[$cacheIdentifier]->flush();
+				}
+			}
+		}
+	}
+
+	/**
+	 * Flushes entries tagged by the specified tag of all registered
+	 * caches of a specific group.
+	 *
+	 * @param string $groupIdentifier
+	 * @param string $tag Tag to search for
+	 * @return void
+	 * @api
+	 */
+	public function flushCachesInGroupByTag($groupIdentifier, $tag) {
+		$this->createAllCaches();
+		if (isset($this->cacheGroups[$groupIdentifier])) {
+			foreach ($this->cacheGroups[$groupIdentifier] as $cacheIdentifier) {
+				if (isset($this->caches[$cacheIdentifier])) {
+					$this->caches[$cacheIdentifier]->flushByTag($tag);
+				}
+			}
+		}
+	}
+
+
 	/**
 	 * Flushes entries tagged by the specified tag of all registered
 	 * caches.
@@ -316,6 +366,20 @@ class CacheManager implements \TYPO3\CMS\Core\SingletonInterface {
 		} else {
 			$backendOptions = $this->defaultCacheConfiguration['options'];
 		}
+
+		// Add the cache identifier to the groups that it should be attached to, or use the default ones.
+		if (isset($this->cacheConfigurations[$identifier]['groups']) && is_array($this->cacheConfigurations[$identifier]['groups'])) {
+			$assignedGroups = $this->cacheConfigurations[$identifier]['groups'];
+		} else {
+			$assignedGroups = $this->defaultCacheConfiguration['groups'];
+		}
+		foreach ($assignedGroups as $groupIdentifier) {
+			if (!isset($this->cacheGroups[$groupIdentifier])) {
+				$this->cacheGroups[$groupIdentifier] = array();
+			}
+			$this->cacheGroups[$groupIdentifier][] = $identifier;
+		}
+
 		$this->cacheFactory->create($identifier, $frontend, $backend, $backendOptions);
 	}
 
diff --git a/typo3/sysext/core/Classes/DataHandling/DataHandler.php b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
index ed2bd0a749511eb40399e4aca32aa7662ed615d9..15fb9786bb9e415093c1cd7071b9e71a6e2a216a 100644
--- a/typo3/sysext/core/Classes/DataHandling/DataHandler.php
+++ b/typo3/sysext/core/Classes/DataHandling/DataHandler.php
@@ -6484,13 +6484,13 @@ class DataHandler {
 	/**
 	 * Unlink (delete) core cache files
 	 *
-	 * @return integer The number of files deleted
-	 * @deprecated since 6.0, will be removed in two versions, use \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::removeCacheFiles() instead
+	 * @return void
+	 * @deprecated since 6.0, will be removed in two versions, use the cache manager directly instead
 	 * @todo Define visibility
 	 */
 	public function removeCacheFiles() {
 		GeneralUtility::logDeprecatedFunction();
-		return \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::removeCacheFiles();
+		$GLOBALS['typo3CacheManager']->flushCachesInGroup('system');
 	}
 
 	/**
@@ -6931,31 +6931,38 @@ class DataHandler {
 	/**
 	 * Clears the cache based on the command $cacheCmd.
 	 *
-	 * $cacheCmd='pages':	Clears cache for all pages. Requires admin-flag to
-	 * be set for BE_USER.
+	 * $cacheCmd='pages'
+	 * Clears cache for all pages and page-based caches inside the cache manager.
+	 * Requires admin-flag to be set for BE_USER.
 	 *
-	 * $cacheCmd='all':		Clears all cache_tables. This is necessary if
-	 * templates are updated. Requires admin-flag to be set for BE_USER.
+	 * $cacheCmd='all'
+	 * Clears all cache_tables. This is necessary if templates are updated.
+	 * Requires admin-flag to be set for BE_USER.
 	 *
-	 * $cacheCmd=[integer]:	Clears cache for the page pointed to by $cacheCmd
-	 * (an integer).
+	 * The following cache_* are intentionally not cleared by 'all'
 	 *
-	 * $cacheCmd='cacheTag:[string]':  Flush page and pagesection cache by given tag
+	 * - cache_md5params:	RDCT redirects.
+	 * - cache_imagesizes:	Clearing this table would cause a lot of unneeded
+	 * Imagemagick calls because the size informations have
+	 * to be fetched again after clearing.
+	 * - all caches inside the cache manager that are inside the group "system"
+	 * - they are only needed to build up the core system and templates,
+	 *   use "temp_cached" or "system" to do that
 	 *
-	 * $cacheCmd='cacheId:[string]':  Removes cache identifier from page and page section cache
+	 * $cacheCmd=[integer]
+	 * Clears cache for the page pointed to by $cacheCmd (an integer).
+	 *
+	 * $cacheCmd='cacheTag:[string]'
+	 * Flush page and pagesection cache by given tag
+	 *
+	 * $cacheCmd='cacheId:[string]'
+	 * Removes cache identifier from page and page section cache
 	 *
 	 * Can call a list of post processing functions as defined in
 	 * $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearCachePostProc']
 	 * (numeric array with values being the function references, called by
 	 * GeneralUtility::callUserFunction()).
 	 *
-	 * Note: The following cache_* are intentionally not cleared by
-	 * $cacheCmd='all':
-	 *
-	 * - cache_md5params:	RDCT redirects.
-	 * - cache_imagesizes:	Clearing this table would cause a lot of unneeded
-	 * Imagemagick calls because the size informations have
-	 * to be fetched again after clearing.
 	 *
 	 * @param string $cacheCmd The cache command, see above description
 	 * @return void
@@ -6968,19 +6975,20 @@ class DataHandler {
 		switch (strtolower($cacheCmd)) {
 			case 'pages':
 				if ($this->admin || $this->BE_USER->getTSConfigVal('options.clearCache.pages')) {
-					$this->internal_clearPageCache();
+					$GLOBALS['typo3CacheManager']->flushCachesInGroup('pages');
 				}
 				break;
 			case 'all':
 				if ($this->admin || $this->BE_USER->getTSConfigVal('options.clearCache.all')) {
-					// Clear all caching framework caches
-					$GLOBALS['typo3CacheManager']->flushCaches();
+					// Clear cache group "all" of caching framework caches
+					$GLOBALS['typo3CacheManager']->flushCachesInGroup('all');
 					if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('cms')) {
 						$GLOBALS['TYPO3_DB']->exec_TRUNCATEquery('cache_treelist');
 					}
 					// Clearing additional cache tables:
 					if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables'])) {
 						foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearAllCache_additionalTables'] as $tableName) {
+							GeneralUtility::deprecationLog('Hook clearAllCache_additionalTables in DataHandler is deprecated in 6.2 and will be removed two versions later. Use the caching framework with database backend instead.');
 							if (!preg_match('/[^[:alnum:]_]/', $tableName) && substr($tableName, -5) === 'cache') {
 								$GLOBALS['TYPO3_DB']->exec_TRUNCATEquery($tableName);
 							} else {
@@ -6989,12 +6997,16 @@ class DataHandler {
 						}
 					}
 				}
-				\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::removeCacheFiles();
+
 				break;
 			case 'temp_cached':
-				\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::removeCacheFiles();
+			case 'system':
+				if ($this->admin || $this->BE_USER->getTSConfigVal('options.clearCache.system')) {
+					$GLOBALS['typo3CacheManager']->flushCachesInGroup('system');
+				}
 				break;
 		}
+
 		$tagsToFlush = array();
 		// Clear cache for a page ID!
 		if (\TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($cacheCmd)) {
@@ -7023,18 +7035,11 @@ class DataHandler {
 		}
 		// process caching framwork operations
 		if (count($tagsToFlush) > 0) {
-			/** @var $pageCache \TYPO3\CMS\Core\Cache\Frontend\AbstractFrontend */
-			$pageCache = $GLOBALS['typo3CacheManager']->getCache('cache_pages');
-			/** @var $pageSectionCache \TYPO3\CMS\Core\Cache\Frontend\AbstractFrontend */
-			$pageSectionCache = $GLOBALS['typo3CacheManager']->getCache('cache_pagesection');
-			/** @var $hashCache \TYPO3\CMS\Core\Cache\Frontend\AbstractFrontend */
-			$hashCache = $GLOBALS['typo3CacheManager']->getCache('cache_hash');
 			foreach ($tagsToFlush as $tag) {
-				$pageCache->flushByTag($tag);
-				$pageSectionCache->flushByTag($tag);
-				$hashCache->flushByTag($tag);
+				$GLOBALS['typo3CacheManager']->flushCachesInGroupByTag('pages', $tag);
 			}
 		}
+
 		// Call post processing function for clear-cache:
 		if (is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['clearCachePostProc'])) {
 			$_params = array('cacheCmd' => strtolower($cacheCmd));
@@ -7148,11 +7153,11 @@ class DataHandler {
 	 *
 	 * @return void
 	 * @todo Define visibility
+	 * @deprecated since TYPO3 CMS 6.2, remove two versions later. The DataHandler clearPageCache method is deprecated, use the cache manager directly.
 	 */
 	public function internal_clearPageCache() {
-		if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('cms')) {
-			$GLOBALS['typo3CacheManager']->getCache('cache_pages')->flush();
-		}
+		GeneralUtility::logDeprecatedFunction();
+		$GLOBALS['typo3CacheManager']->flushCachesInGroup('pages');
 	}
 
 	/**
diff --git a/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php b/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
index b7a7f3ce7aadd50cfd9fb16ad7addaa855cca632..70b579c3d98b5be183212ab391d6b6b1630224b6 100644
--- a/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
+++ b/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php
@@ -1744,7 +1744,7 @@ tt_content.' . $key . $prefix . ' {
 	}
 
 	/**
-	 * Remove cache files from php code cache, tagged with 'core'
+	 * Remove cache files from php code cache, grouped by 'system'
 	 *
 	 * This removes the following cache entries:
 	 * - autoloader cache registry
@@ -1759,9 +1759,7 @@ tt_content.' . $key . $prefix . ' {
 	 * @return void
 	 */
 	static public function removeCacheFiles() {
-		/** @var $codeCache \TYPO3\CMS\Core\Cache\Frontend\PhpFrontend */
-		$codeCache = $GLOBALS['typo3CacheManager']->getCache('cache_core');
-		$codeCache->flush();
+		$GLOBALS['typo3CacheManager']->flushCachesInGroup('system');
 	}
 
 	/**
diff --git a/typo3/sysext/core/Configuration/DefaultConfiguration.php b/typo3/sysext/core/Configuration/DefaultConfiguration.php
index 0586978a688793bf0284dc88c21291e397724a2d..162bd729014d37607305bca7a41dc9c186c95ec5 100644
--- a/typo3/sysext/core/Configuration/DefaultConfiguration.php
+++ b/typo3/sysext/core/Configuration/DefaultConfiguration.php
@@ -133,51 +133,68 @@ return array(
 				'cache_core' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\PhpFrontend',
 					'backend' => 'TYPO3\CMS\Core\Cache\Backend\SimpleFileBackend',
-					'options' => array()
+					'options' => array(
+						'defaultLifetime' => 0,
+					),
+					'groups' => array('system')
 				),
 				'cache_classes' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\StringFrontend',
 					'backend' => 'TYPO3\CMS\Core\Cache\Backend\SimpleFileBackend',
-					'options' => array()
+					'options' => array(
+						'defaultLifetime' => 0,
+					),
+					'groups' => array('system')
 				),
 				'cache_hash' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\VariableFrontend',
 					'backend' => 'TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend',
-					'options' => array()
+					'options' => array(),
+					'groups' => array('pages', 'all')
 				),
 				'cache_pages' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\VariableFrontend',
 					'backend' => 'TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend',
 					'options' => array(
 						'compression' => TRUE
-					)
+					),
+					'groups' => array('pages', 'all')
 				),
 				'cache_pagesection' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\VariableFrontend',
 					'backend' => 'TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend',
 					'options' => array(
 						'compression' => TRUE
-					)
+					),
+					'groups' => array('pages', 'all')
 				),
 				'cache_phpcode' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\PhpFrontend',
 					'backend' => 'TYPO3\CMS\Core\Cache\Backend\FileBackend',
-					'options' => array()
+					'options' => array(
+						'defaultLifetime' => 0,
+					),
+					'groups' => array('system')
 				),
 				'cache_runtime' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\VariableFrontend',
 					'backend' => 'TYPO3\CMS\Core\Cache\Backend\TransientMemoryBackend',
-					'options' => array()
+					'options' => array(),
+					'groups' => array()
 				),
 				'cache_rootline' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\VariableFrontend',
 					'backend' => 'TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend',
-					'options' => array()
+					'options' => array(),
+					'groups' => array('pages', 'all')
 				),
 				't3lib_l10n' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\VariableFrontend',
 					'backend' => 'TYPO3\CMS\Core\Cache\Backend\SimpleFileBackend',
-					'options' => array(),
+					'options' => array(
+						'defaultLifetime' => 0,
+					),
+					'groups' => array('system')
 				),
 				'extbase_object' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\VariableFrontend',
@@ -185,6 +202,7 @@ return array(
 					'options' => array(
 						'defaultLifetime' => 0,
 					),
+					'groups' => array('system')
 				),
 				'extbase_reflection' => array(
 					'frontend' => 'TYPO3\CMS\Core\Cache\Frontend\VariableFrontend',
@@ -192,6 +210,7 @@ return array(
 					'options' => array(
 						'defaultLifetime' => 0,
 					),
+					'groups' => array('system')
 				),
 			),
 		),
diff --git a/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php
index d1b6d22ceb264941ca335ec4ba48c3bf650e2b6b..76bb52995effdb822d450fce0f118df7ba3add48 100644
--- a/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php
+++ b/typo3/sysext/core/Tests/Unit/Utility/ExtensionManagementUtilityTest.php
@@ -1037,17 +1037,9 @@ class ExtensionManagementUtilityTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
 	/**
 	 * @test
 	 */
-	public function removeCacheFilesFlushesCache() {
-		$mockCache = $this->getMock(
-			'TYPO3\\CMS\\Core\\Cache\\Frontend\\AbstractFrontend',
-			array('getIdentifier', 'set', 'get', 'getByTag', 'has', 'remove', 'flush', 'flushByTag', 'requireOnce'),
-			array(),
-			'',
-			FALSE
-		);
-		$GLOBALS['typo3CacheManager'] = $this->getMock('TYPO3\\CMS\\Core\\Cache\\CacheManager', array('getCache'));
-		$GLOBALS['typo3CacheManager']->expects($this->any())->method('getCache')->will($this->returnValue($mockCache));
-		$mockCache->expects($this->once())->method('flush');
+	public function removeCacheFilesFlushesSystemCaches() {
+		$GLOBALS['typo3CacheManager'] = $this->getMock('TYPO3\\CMS\\Core\\Cache\\CacheManager', array('flushCachesInGroup'));
+		$GLOBALS['typo3CacheManager']->expects($this->once())->method('flushCachesInGroup')->with('system');
 		ExtensionManagementUtility::removeCacheFiles();
 	}
 
diff --git a/typo3/sysext/dbal/ext_localconf.php b/typo3/sysext/dbal/ext_localconf.php
index 2d4458b5771aa57d40afc14f339fe48a17a479e3..44c0c8232b5d7243f254ef8e2d85ff0a48c77ea2 100644
--- a/typo3/sysext/dbal/ext_localconf.php
+++ b/typo3/sysext/dbal/ext_localconf.php
@@ -10,6 +10,7 @@ $GLOBALS['TYPO3_CONF_VARS']['SYS']['Objects']['TYPO3\\CMS\\Recordlist\\RecordLis
 // Register caches if not already done in localconf.php or a previously loaded extension.
 if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['dbal'])) {
 	$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['dbal'] = array(
-		'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\TransientMemoryBackend'
+		'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\TransientMemoryBackend',
+		'groups' => array()
 	);
 }
diff --git a/typo3/sysext/extbase/ext_localconf.php b/typo3/sysext/extbase/ext_localconf.php
index ec25f577ced02058d41b3546f5a9b2d589eb26b8..8b06fcf05818d137e6acf2c91be323427685dd84 100644
--- a/typo3/sysext/extbase/ext_localconf.php
+++ b/typo3/sysext/extbase/ext_localconf.php
@@ -7,10 +7,14 @@ require_once \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('extbas
 require_once \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('extbase') . 'Classes/Utility/ExtensionUtility.php';
 
 if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_typo3dbbackend_tablecolumns'])) {
-	$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_typo3dbbackend_tablecolumns'] = array();
+	$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_typo3dbbackend_tablecolumns'] = array(
+		'groups' => array('system')
+	);
 }
 if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_datamapfactory_datamap'])) {
-	$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_datamapfactory_datamap'] = array();
+	$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_datamapfactory_datamap'] = array(
+		'groups' => array('system')
+	);
 }
 
 // We need to set the default implementation for Storage Backend & Query Settings
diff --git a/typo3/sysext/extensionmanager/Classes/Utility/ConfigurationUtility.php b/typo3/sysext/extensionmanager/Classes/Utility/ConfigurationUtility.php
index 1247e6fcad44cec49f8e1192bd64c1adf6114a13..4c21b1c1d6e8f09d33c3548d69abd78a84c4557f 100644
--- a/typo3/sysext/extensionmanager/Classes/Utility/ConfigurationUtility.php
+++ b/typo3/sysext/extensionmanager/Classes/Utility/ConfigurationUtility.php
@@ -71,7 +71,7 @@ class ConfigurationUtility implements \TYPO3\CMS\Core\SingletonInterface {
 		/** @var $configurationManager \TYPO3\CMS\Core\Configuration\ConfigurationManager */
 		$configurationManager = $this->objectManager->get('TYPO3\\CMS\\Core\\Configuration\\ConfigurationManager');
 		$configurationManager->setLocalConfigurationValueByPath('EXT/extConf/' . $extensionKey, serialize($configuration));
-		\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::removeCacheFiles();
+		$GLOBALS['typo3CacheManager']->flushCachesInGroup('system');
 	}
 
 	/**
diff --git a/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php b/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php
index aaf161868339ca88908413c48ceedf50f5f5e587..ec4504b6a06bbac87aef02dce3d0f4b0d9d08d1e 100644
--- a/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php
+++ b/typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php
@@ -262,7 +262,7 @@ class InstallUtility implements \TYPO3\CMS\Core\SingletonInterface {
 	 * @return void
 	 */
 	public function reloadCaches() {
-		\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::removeCacheFiles();
+		$GLOBALS['typo3CacheManager']->flushCachesInGroup('system');
 		\TYPO3\CMS\Core\Core\Bootstrap::getInstance()->reloadTypo3LoadedExtAndClassLoaderAndExtLocalconf();
 	}
 
diff --git a/typo3/sysext/fluid/ext_localconf.php b/typo3/sysext/fluid/ext_localconf.php
index 9830ad982cdb31211fa9dfbcc13ad0288a677239..dc648cb407e17af2908783cb3d32b31b0cfc1974 100644
--- a/typo3/sysext/fluid/ext_localconf.php
+++ b/typo3/sysext/fluid/ext_localconf.php
@@ -6,6 +6,7 @@ if (!defined('TYPO3_MODE')) {
 if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['fluid_template'])) {
 	$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['fluid_template'] = array(
 		'backend' => 'TYPO3\\CMS\\Core\\Cache\\Backend\\FileBackend',
-		'frontend' => 'TYPO3\\CMS\\Core\\Cache\\Frontend\\PhpFrontend'
+		'frontend' => 'TYPO3\\CMS\\Core\\Cache\\Frontend\\PhpFrontend',
+		'groups' => array('system')
 	);
 }
diff --git a/typo3/sysext/install/Classes/Service/SqlExpectedSchemaService.php b/typo3/sysext/install/Classes/Service/SqlExpectedSchemaService.php
index 3e468289cc04bb85d24bd890db93b5191be0f84d..626ec5f7a9cee1772b9c04644633c18ab32e6493 100644
--- a/typo3/sysext/install/Classes/Service/SqlExpectedSchemaService.php
+++ b/typo3/sysext/install/Classes/Service/SqlExpectedSchemaService.php
@@ -112,11 +112,19 @@ class SqlExpectedSchemaService {
 	 */
 	public function getCachingFrameworkRequiredDatabaseSchema() {
 		$cacheConfigurationBackup = $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'];
-		$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_datamapfactory_datamap'] = array();
+		$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_datamapfactory_datamap'] = array(
+			'groups' => array('system')
+		);
 		$extbaseObjectFakeName = uniqid('extbase_object');
-		$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$extbaseObjectFakeName] = array();
-		$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_reflection'] = array();
-		$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_typo3dbbackend_tablecolumns'] = array();
+		$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$extbaseObjectFakeName] = array(
+			'groups' => array('system')
+		);
+		$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_reflection'] = array(
+			'groups' => array('system')
+		);
+		$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_typo3dbbackend_tablecolumns'] = array(
+			'groups' => array('system')
+		);
 		/** @var \TYPO3\CMS\Core\Cache\CacheManager $cacheManager */
 		$cacheManager = $GLOBALS['typo3CacheManager'];
 		$cacheManager->setCacheConfigurations($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']);
diff --git a/typo3/sysext/workspaces/ext_localconf.php b/typo3/sysext/workspaces/ext_localconf.php
index f07dff69ddbb8326f78007575b6fdf65b54ede8d..85eb9015fe4b8a1c7ffd38f8482be803229b6a1c 100644
--- a/typo3/sysext/workspaces/ext_localconf.php
+++ b/typo3/sysext/workspaces/ext_localconf.php
@@ -29,7 +29,9 @@ $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/alt_doc.php']['makeEditForm_acc
 
 // Register workspaces cache if not already done in localconf.php or a previously loaded extension.
 if (!is_array($GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['workspaces_cache'])) {
-	$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['workspaces_cache'] = array();
+	$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['workspaces_cache'] = array(
+		'groups' => array('all')
+	);
 }
 
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addUserTSConfig('options.workspaces.considerReferences = 1');