本文整理汇总了PHP中Symfony\Component\HttpFoundation\Response::isCacheable方法的典型用法代码示例。如果您正苦于以下问题:PHP Response::isCacheable方法的具体用法?PHP Response::isCacheable怎么用?PHP Response::isCacheable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Symfony\Component\HttpFoundation\Response
的用法示例。
在下文中一共展示了Response::isCacheable方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: handleResponse
/**
* Update a valid non cacheable Response with http cache headers
*
* @see http://symfony.com/fr/doc/current/book/http_cache.html
*/
public function handleResponse(Response $response)
{
// do not handle invalid response
if (!$response->isOk()) {
return $response;
}
// do not handle response with http cache headers
if ($response->isCacheable()) {
return $response;
}
// seek for optional configuration
$this->readRoutingConfiguration();
// mark the response as private
$response->setPrivate();
// set the private or shared max age
$response->setMaxAge($this->duration);
$response->setSharedMaxAge($this->duration);
// set expires
$date = new \DateTime();
$date->modify(sprintf('+%d seconds', $this->duration));
$response->setExpires($date);
// set a custom Cache-Control directive
$response->headers->addCacheControlDirective('must-revalidate', true);
return $response;
}
示例2: updateMetadata
/**
* {@inheritdoc}
*/
public function updateMetadata(Response $response, BlockContextInterface $blockContext = null)
{
if ($this->currentTtl === null) {
$this->currentTtl = $response->getTtl();
}
if ($response->isCacheable() !== null && $response->getTtl() < $this->currentTtl) {
$this->currentTtl = $response->getTtl();
}
}
示例3: updateHeaders
private function updateHeaders(Response $response, Response $subResponse)
{
if ($this->response->isCacheable() && $subResponse->isCacheable()) {
$maxAge = (int) min($response->headers->getCacheControlDirective('max-age'), $subResponse->headers->getCacheControlDirective('max-age'));
$sMaxAge = (int) min($response->headers->getCacheControlDirective('s-maxage'), $subResponse->headers->getCacheControlDirective('s-maxage'));
$response->setSharedMaxAge($sMaxAge);
$response->setMaxAge($maxAge);
} else {
$this->response->headers->set('Cache-Control', 'no-cache, must-revalidate');
}
}
示例4: getParameters
/**
* {@inheritdoc}
*/
public function getParameters()
{
$code = null;
$codeType = null;
$cacheable = null;
if (null !== $this->response) {
$code = sprintf('%d', $this->response->getStatusCode());
$cacheable = $this->response->isCacheable() ? 'cacheable' : 'not_cacheable';
if ($this->response->isInformational()) {
$codeType = 'informational';
} elseif ($this->response->isSuccessful()) {
$codeType = 'successful';
} elseif ($this->response->isRedirection()) {
$codeType = 'redirection';
} elseif ($this->response->isClientError()) {
$codeType = 'client_error';
} elseif ($this->response->isServerError()) {
$codeType = 'server_error';
} else {
$codeType = 'other';
}
}
return array('response_code' => $code, 'response_code_type' => $codeType, 'response_cacheable' => $cacheable);
}
示例5: addMetaInformation
/**
* This method is responsible to cascade ttl to the parent block.
*
* @param Response $response
* @param BlockContextInterface $blockContext
* @param BlockServiceInterface $service
*
* @return Response
*/
protected function addMetaInformation(Response $response, BlockContextInterface $blockContext, BlockServiceInterface $service)
{
// a response exists, use it
if ($this->lastResponse && $this->lastResponse->isCacheable()) {
$response->setTtl($this->lastResponse->getTtl());
$response->setPublic();
} elseif ($this->lastResponse) {
// not cacheable
$response->setPrivate();
$response->setTtl(0);
$response->headers->removeCacheControlDirective('s-maxage');
$response->headers->removeCacheControlDirective('maxage');
}
// no more children available in the stack, reseting the state object
if (!$blockContext->getBlock()->hasParent()) {
$this->lastResponse = null;
} else {
// contains a parent so storing the response
$this->lastResponse = $response;
}
return $response;
}
示例6: testIsCacheableWithSetTtl
public function testIsCacheableWithSetTtl()
{
$response = new Response();
$response->setTtl(10);
$this->assertTrue($response->isCacheable());
}