Commit 7115108c authored by alexpott's avatar alexpott
Browse files

Issue #2527126 by dawehner, Wim Leers, hass: Only send cache context/tags if frontend proxy exists

parent 09e63473
...@@ -116,8 +116,10 @@ public function onRespond(FilterResponseEvent $event) { ...@@ -116,8 +116,10 @@ public function onRespond(FilterResponseEvent $event) {
$response->headers->set('X-Frame-Options', 'SAMEORIGIN', FALSE); $response->headers->set('X-Frame-Options', 'SAMEORIGIN', FALSE);
// Expose the cache contexts and cache tags associated with this page in a // Expose the cache contexts and cache tags associated with this page in a
// X-Drupal-Cache-Contexts and X-Drupal-Cache-Tags header respectively. // X-Drupal-Cache-Contexts and X-Drupal-Cache-Tags header respectively, when
if ($response instanceof CacheableResponseInterface) { // either a reverse proxy is being used (so the reverse proxy or CDN can be
// invalidated when appropriate) or when developing/debugging.
if ((Settings::get('reverse_proxy', FALSE) || Settings::get('send_cacheability_headers', FALSE)) && $response instanceof CacheableResponseInterface) {
$response_cacheability = $response->getCacheableMetadata(); $response_cacheability = $response->getCacheableMetadata();
$response->headers->set('X-Drupal-Cache-Tags', implode(' ', $response_cacheability->getCacheTags())); $response->headers->set('X-Drupal-Cache-Tags', implode(' ', $response_cacheability->getCacheTags()));
$response->headers->set('X-Drupal-Cache-Contexts', implode(' ', $this->cacheContextsManager->optimizeTokens($response_cacheability->getCacheContexts()))); $response->headers->set('X-Drupal-Cache-Contexts', implode(' ', $this->cacheContextsManager->optimizeTokens($response_cacheability->getCacheContexts())));
......
...@@ -742,6 +742,13 @@ protected function prepareSettings() { ...@@ -742,6 +742,13 @@ protected function prepareSettings() {
'value' => FALSE, 'value' => FALSE,
'required' => TRUE, 'required' => TRUE,
]; ];
// Send cacheability headers so tests can check their values.
$settings['settings']['send_cacheability_headers'] = (object) [
'value' => TRUE,
'required' => TRUE,
];
$this->writeSettings($settings); $this->writeSettings($settings);
// Allow for test-specific overrides. // Allow for test-specific overrides.
$settings_testing_file = DRUPAL_ROOT . '/' . $this->originalSite . '/settings.testing.php'; $settings_testing_file = DRUPAL_ROOT . '/' . $this->originalSite . '/settings.testing.php';
......
...@@ -58,6 +58,13 @@ ...@@ -58,6 +58,13 @@
*/ */
$settings['cache']['bins']['render'] = 'cache.backend.null'; $settings['cache']['bins']['render'] = 'cache.backend.null';
/**
* Send cacheablity headers for debugging purposes.
*
* By default, cacheability headers are only sent when behind a reverse proxy.
*/
$settings['send_cacheability_headers'] = TRUE;
/** /**
* Allow test modules and themes to be installed. * Allow test modules and themes to be installed.
* *
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment