diff --git a/core/includes/common.inc b/core/includes/common.inc index e0d1861..257c997 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -4651,15 +4651,15 @@ function _drupal_bootstrap_full($skip = FALSE) { * * @see drupal_page_header() */ -function drupal_page_set_cache($body) { +function drupal_page_set_cache($response, $request) { global $base_root; if (drupal_page_is_cacheable()) { $cache = (object) array( - 'cid' => $base_root . request_uri(), + 'cid' => $base_root . $request->getRequestUri(), 'data' => array( - 'path' => current_path(), - 'body' => $body, + 'path' => $request->getQueryString(), + 'body' => $response->getContent(), 'title' => drupal_get_title(), 'headers' => array(), ), @@ -4668,17 +4668,11 @@ function drupal_page_set_cache($body) { 'created' => REQUEST_TIME, ); - // Restore preferred header names based on the lower-case names returned - // by drupal_get_http_header(). - $header_names = _drupal_set_preferred_header_name(); - foreach (drupal_get_http_header() as $name_lower => $value) { - $cache->data['headers'][$header_names[$name_lower]] = $value; - if ($name_lower == 'expires') { - // Use the actual timestamp from an Expires header if available. - $date = new DrupalDateTime($value); - $cache->expire = $date->getTimestamp(); - } - } + $cache->data['headers'] = $response->headers->all(); + + // Use the actual timestamp from an Expires header if available. + $date = new DrupalDateTime($response->getExpires()); + $cache->expire = $date->getTimestamp(); if ($cache->data['body']) { if (config('system.performance')->get('response.gzip') && extension_loaded('zlib')) { diff --git a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php index c5c491c..535ba0d 100644 --- a/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/FinishResponseSubscriber.php @@ -46,6 +46,7 @@ public function onRespond(FilterResponseEvent $event) { return; } + $request = $event->getRequest(); $response = $event->getResponse(); // Set the X-UA-Compatible HTTP header to force IE to use the most recent @@ -92,7 +93,7 @@ public function onRespond(FilterResponseEvent $event) { // Commit the user session, if needed. drupal_session_commit(); $max_age = config('system.performance')->get('cache.page.max_age'); - if ($max_age > 0 && ($cache = drupal_page_set_cache($response->getContent()))) { + if ($max_age > 0 && ($cache = drupal_page_set_cache($response, $request))) { drupal_serve_page_from_cache($cache); // drupal_serve_page_from_cache() already printed the response. $response->setContent('');