Метод setSharedMaxAge
Метод setSharedMaxAge класса
Response задаёт время в секундах,
в течение которого ответ может храниться
в разделяемом кэше. В отличие от
setMaxAge, этот метод управляет
кэшированием на промежуточных серверах:
прокси, балансировщиках и CDN. Первым
параметром передаётся целое число секунд.
Метод возвращает текущий объект Response,
что позволяет строить цепочки вызовов.
Синтаксис
$response->setSharedMaxAge(int $seconds): static
Пример
Давайте установим время разделяемого кэширования в 60 секунд:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$response = new Response('hello');
$response->setSharedMaxAge(60);
return $response;
}
}
?>
После выполнения кода в заголовках
ответа появится Cache-Control
со значением "public, s-maxage=60".
Пример
Давайте проверим установленное значение через заголовок ответа:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$response = new Response('article');
$response->setSharedMaxAge(120);
echo $response->headers->get('Cache-Control');
return $response;
}
}
?>
Результат выполнения кода:
"public, s-maxage=120"
Пример
Давайте установим значение 0,
чтобы запретить разделяемое кэширование:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$response = new Response('user');
$response->setSharedMaxAge(0);
echo $response->headers->get('Cache-Control');
return $response;
}
}
?>
Результат выполнения кода:
"public, s-maxage=0"
Смотрите также
-
класс
Response,
который представляет HTTP-ответ -
метод
setMaxAge,
который задаёт время кэширования для клиента -
метод
setPublic,
который разрешает кэширование ответа -
метод
setPrivate,
который запрещает разделяемое кэширование