class ResponseCacheStrategy in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php \Symfony\Component\HttpKernel\HttpCache\ResponseCacheStrategy
ResponseCacheStrategy knows how to compute the Response cache HTTP header based on the different response cache headers.
This implementation changes the master response TTL to the smallest TTL received or force validation if one of the surrogates has validation cache strategy.
@author Fabien Potencier <fabien@symfony.com>
Hierarchy
- class \Symfony\Component\HttpKernel\HttpCache\ResponseCacheStrategy implements ResponseCacheStrategyInterface
Expanded class hierarchy of ResponseCacheStrategy
File
- vendor/
symfony/ http-kernel/ HttpCache/ ResponseCacheStrategy.php, line 29
Namespace
Symfony\Component\HttpKernel\HttpCacheView source
class ResponseCacheStrategy implements ResponseCacheStrategyInterface {
private $cacheable = true;
private $embeddedResponses = 0;
private $ttls = array();
private $maxAges = array();
/**
* {@inheritdoc}
*/
public function add(Response $response) {
if ($response
->isValidateable()) {
$this->cacheable = false;
}
else {
$this->ttls[] = $response
->getTtl();
$this->maxAges[] = $response
->getMaxAge();
}
++$this->embeddedResponses;
}
/**
* {@inheritdoc}
*/
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);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ResponseCacheStrategy:: |
private | property | ||
ResponseCacheStrategy:: |
private | property | ||
ResponseCacheStrategy:: |
private | property | ||
ResponseCacheStrategy:: |
private | property | ||
ResponseCacheStrategy:: |
public | function |
Adds a Response. Overrides ResponseCacheStrategyInterface:: |
|
ResponseCacheStrategy:: |
public | function |
Updates the Response HTTP headers based on the embedded Responses. Overrides ResponseCacheStrategyInterface:: |