diff -u b/core/lib/Drupal/Core/Config/ConfigFactory.php b/core/lib/Drupal/Core/Config/ConfigFactory.php --- b/core/lib/Drupal/Core/Config/ConfigFactory.php +++ b/core/lib/Drupal/Core/Config/ConfigFactory.php @@ -98,7 +98,6 @@ */ public function disableOverrides() { $this->useOverrides = FALSE; - $this->reset(); } /** @@ -106,7 +105,6 @@ */ public function enableOverrides() { $this->useOverrides = TRUE; - $this->reset(); } /** @@ -316,12 +314,13 @@ * The cache key. */ public function getCacheKey($name) { - if (isset($this->language)) { - return $this->language->id . ":$name"; - } - else { - return $name; + $can_override = $this->canOverride($name); + $cache_key = $name . ':' . ($can_override ? 'overrides' : 'raw'); + + if ($can_override && isset($this->language)) { + $cache_key = $cache_key . ':' . $this->language->id; } + return $cache_key; } /** @@ -335,8 +334,7 @@ */ public function getCacheKeys($name) { return array_filter(array_keys($this->cache), function($key) use ($name) { - // Match only $name directly, or LANGCODE:$name. - return preg_match('/^([a-z]+:)?' . preg_quote($name) . '$/', $key); + return preg_match('/^' . preg_quote($name) . ':/', $key); }); }