X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Flib%2FDrupal%2FCore%2FCache%2FContext%2FHeadersCacheContext.php;fp=web%2Fcore%2Flib%2FDrupal%2FCore%2FCache%2FContext%2FHeadersCacheContext.php;h=71db8e64c78c64271839236f69fc95556e858687;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hp=0a9ac0a86e79fca836af85f2ec6cd8adba458e3c;hpb=aea91e65e895364e460983b890e295aa5d5540a5;p=yaffs-website diff --git a/web/core/lib/Drupal/Core/Cache/Context/HeadersCacheContext.php b/web/core/lib/Drupal/Core/Cache/Context/HeadersCacheContext.php index 0a9ac0a86..71db8e64c 100644 --- a/web/core/lib/Drupal/Core/Cache/Context/HeadersCacheContext.php +++ b/web/core/lib/Drupal/Core/Cache/Context/HeadersCacheContext.php @@ -25,11 +25,28 @@ class HeadersCacheContext extends RequestStackCacheContextBase implements Calcul */ public function getContext($header = NULL) { if ($header === NULL) { - return $this->requestStack->getCurrentRequest()->headers->all(); + $headers = $this->requestStack->getCurrentRequest()->headers->all(); + // Order headers by name to have less cache variations. + ksort($headers); + $result = ''; + foreach ($headers as $name => $value) { + if ($result) { + $result .= '&'; + } + // Sort values to minimize cache variations. + sort($value); + $result .= $name . '=' . implode(',', $value); + } + return $result; } - else { - return $this->requestStack->getCurrentRequest()->headers->get($header); + elseif ($this->requestStack->getCurrentRequest()->headers->has($header)) { + $value = $this->requestStack->getCurrentRequest()->headers->get($header); + if ($value !== '') { + return $value; + } + return '?valueless?'; } + return ''; } /**