diff -u b/core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php b/core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php --- b/core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php +++ b/core/lib/Drupal/Core/Cache/Context/CacheContextsManager.php @@ -109,17 +109,15 @@ $optimized_tokens = $this->optimizeTokens($context_tokens); // Iterate through cache contexts that has been optimized away and get their // cacheable metadata. - if ($cacheable_metadata) { - foreach (static::parseTokens(array_diff($context_tokens, $optimized_tokens)) as $context_token) { - list($context_id, $parameter) = $context_token; - if (!in_array($context_id, $this->contexts)) { - throw new \InvalidArgumentException(SafeMarkup::format('"@context" is not a valid cache context ID.', ['@context' => $context_id])); - } - $context = $this->getService($context_id); - // To make it possible to return NULL instead of CacheableMetadata. - if ($metadata = $context->getCacheableMetadata($parameter)) { - $cacheable_metadata = $cacheable_metadata->merge($metadata); - } + foreach (static::parseTokens(array_diff($context_tokens, $optimized_tokens)) as $context_token) { + list($context_id, $parameter) = $context_token; + if (!in_array($context_id, $this->contexts)) { + throw new \InvalidArgumentException(SafeMarkup::format('"@context" is not a valid cache context ID.', ['@context' => $context_id])); + } + $context = $this->getService($context_id); + // To make it possible to return NULL instead of CacheableMetadata. + if ($metadata = $context->getCacheableMetadata($parameter)) { + $cacheable_metadata = $cacheable_metadata->merge($metadata); } } only in patch2: unchanged: --- a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php +++ b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php @@ -211,7 +211,7 @@ public function generateResultsKey() { 'items_per_page' => $this->view->getItemsPerPage(), 'offset' => $this->view->getOffset(), ]; - $key_data += \Drupal::service('cache_contexts_manager')->convertTokensToKeys($this->displayHandler->getCacheMetadata()['contexts']); + $key_data += \Drupal::service('cache_contexts_manager')->convertTokensToKeys($this->displayHandler->getCacheMetadata()['contexts'])->getKeys(); $this->resultsKey = $this->view->storage->id() . ':' . $this->displayHandler->display['id'] . ':results:' . hash('sha256', serialize($key_data)); }