You are here

public function ResponseCacheStrategy::update in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php \Symfony\Component\HttpKernel\HttpCache\ResponseCacheStrategy::update()

Updates the Response HTTP headers based on the embedded Responses.

Parameters

Response $response:

Overrides ResponseCacheStrategyInterface::update

File

vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php, line 54

Class

ResponseCacheStrategy
ResponseCacheStrategy knows how to compute the Response cache HTTP header based on the different response cache headers.

Namespace

Symfony\Component\HttpKernel\HttpCache

Code

public function update(Response $response) {

  // if we have no embedded Response, do nothing
  if (0 === $this->embeddedResponses) {
    return;
  }

  // Remove validation related headers in order to avoid browsers using
  // their own cache, because some of the response content comes from
  // at least one embedded response (which likely has a different caching strategy).
  if ($response
    ->isValidateable()) {
    $response
      ->setEtag(null);
    $response
      ->setLastModified(null);
    $this->cacheable = false;
  }
  if (!$this->cacheable) {
    $response->headers
      ->set('Cache-Control', 'no-cache, must-revalidate');
    return;
  }
  $this->ttls[] = $response
    ->getTtl();
  $this->maxAges[] = $response
    ->getMaxAge();
  if (null !== ($maxAge = min($this->maxAges))) {
    $response
      ->setSharedMaxAge($maxAge);
    $response->headers
      ->set('Age', $maxAge - min($this->ttls));
  }
  $response
    ->setMaxAge(0);
}