isValidateable() public method

Returns true if the response includes headers that can be used to validate the response with the origin server using a conditional GET request.
public isValidateable ( ) : boolean
return boolean true if the response is validateable, false otherwise
 /**
  * {@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);
 }
 /**
  * Adds a Response.
  *
  * @param Response $response
  */
 public function add(Response $response)
 {
     if ($response->isValidateable()) {
         $this->cacheable = false;
     } else {
         $this->ttls[] = $response->getTtl();
         $this->maxAges[] = $response->getMaxAge();
     }
 }
Beispiel #3
0
 public function testIsValidateable()
 {
     $response = new Response('', 200, array('Last-Modified' => $this->createDateTimeOneHourAgo()->format(DATE_RFC2822)));
     $this->assertTrue($response->isValidateable(), '->isValidateable() returns true if Last-Modified is present');
     $response = new Response('', 200, array('ETag' => '"12345"'));
     $this->assertTrue($response->isValidateable(), '->isValidateable() returns true if ETag is present');
     $response = new Response();
     $this->assertFalse($response->isValidateable(), '->isValidateable() returns false when no validator is present');
 }
Beispiel #4
0
 /**
  * Stores the response's TTL locally.
  *
  * @param Response $response
  */
 protected function addEsiTtl(Response $response)
 {
     $this->esiTtls[] = $response->isValidateable() ? -1 : $response->getTtl();
 }