Метод setExpires
Метод setExpires класса Response
устанавливает HTTP-заголовок Expires.
Этот заголовок сообщает браузеру и промежуточным
кешам дату и время, после которого ответ считается
устаревшим. Первым параметром передаётся объект
DateTimeInterface с нужной датой.
Метод возвращает $this, что позволяет
выстраивать цепочку вызовов.
Синтаксис
public function setExpires(?DateTimeInterface $date): static
Пример
Давайте установим дату устаревания ответа на один час вперёд:
<?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->setExpires(new \DateTime('+1 hour'));
return $response;
}
}
?>
После выполнения кода браузер получит заголовок
Expires с датой, отстоящей на час от текущего
момента. До наступления этой даты ответ может быть
взят из кеша.
Пример
Давайте установим конкретную дату устаревания ответа:
<?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/old', name: 'article_old')]
public function old(): Response
{
$response = new Response('article');
$response->setExpires(new \DateTime('2026-01-01 00:00:00'));
return $response;
}
}
?>
После выполнения кода заголовок Expires будет
содержать дату Thu, 01 Jan 2026 00:00:00 GMT.
Пример
Давайте сбросим дату устаревания, передав null:
<?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/reset', name: 'article_reset')]
public function reset(): Response
{
$response = new Response('article');
$response->setExpires(null);
return $response;
}
}
?>
После выполнения кода заголовок Expires будет
удалён из ответа, и кеширование по этой дате
действовать не будет.
Смотрите также
-
класс
Response,
который представляет HTTP-ответ -
метод
setMaxAge,
который задаёт время жизни ответа в секундах -
метод
setLastModified,
который задаёт дату последнего изменения -
метод
setPublic,
который разрешает публичное кеширование