РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
242 of 1361 menu

Метод setLastModified

Метод setLastModified класса Response устанавливает дату и время последнего изменения ресурса. Это значение отправляется клиенту в HTTP-заголовке Last-Modified. Браузеры и прокси-серверы используют этот заголовок для условных запросов: если контент не изменился с указанного времени, сервер может вернуть статус 304 Not Modified и сэкономить трафик. Первым параметром метод принимает объект \DateTimeInterface или целое число (Unix timestamp).

Синтаксис

public function setLastModified(?DateTimeInterface $date): static

Пример

Давайте установим время последнего изменения для ответа:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_show')] public function show(): Response { $response = new Response('article'); $response->setLastModified(new DateTime('2024-01-01 12:00:00')); return $response; } } ?>

Пример

Давайте проверим, изменился ли контент, и вернём статус 304, если нет:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_show')] public function show(): Response { $response = new Response('article'); $response->setLastModified(new DateTime('2024-01-01 12:00:00')); if ($response->isNotModified($this->getRequest())) { return $response; } return $response; } } ?>

Если клиент отправил заголовок If-Modified-Since с датой, равной или более поздней, чем 2024-01-01 12:00:00, метод isNotModified вернёт true, и ответ будет отправлен со статусом 304.

Пример

Давайте передадим время в виде Unix timestamp:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article', name: 'article_show')] public function show(): Response { $response = new Response('article'); $response->setLastModified(1704106800); return $response; } } ?>

Результат выполнения кода в HTTP-заголовках:

Last-Modified: Mon, 01 Jan 2024 12:00:00 GMT

Смотрите также

  • класс Response,
    который представляет HTTP-ответ
  • метод setEtag,
    который задаёт ETag для кеширования
  • метод isNotModified,
    который проверяет, изменился ли контент
  • метод setMaxAge,
    который задаёт время кеширования ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить