Как лучше добавить заголовки Last-Modified и Expires в Laravel?

В Laravel можно легко добавить заголовки "Last-Modified" и "Expires" с помощью механизма middleware. Middleware в Laravel представляет собой промежуточное звено между входящим запросом и исходящим ответом и может использоваться для выполнения различных операций.

Для добавления заголовка "Last-Modified" мы можем создать middleware, который будет прослушивать каждый запрос и устанавливать соответствующий заголовок в ответе. Вот пример кода для создания такого middleware:

namespace AppHttpMiddleware;

use Closure;

class AddLastModifiedHeader
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        $lastModified = // ваш код для определения даты последнего изменения ресурса

        $response->header('Last-Modified', $lastModified);

        return $response;
    }
}

Здесь мы определяем класс AddLastModifiedHeader, который реализует метод handle. В этом методе мы получаем ответ от следующего middleware или контроллера, а затем устанавливаем заголовок "Last-Modified", используя дату последнего изменения ресурса.

Чтобы применить этот middleware ко всем запросам, вам необходимо его зарегистрировать в файле AppHttpKernel.php, в массиве $middleware:

protected $middleware = [
    // ...
    AppHttpMiddlewareAddLastModifiedHeader::class,
];

Теперь заголовок "Last-Modified" будет автоматически добавляться ко всем исходящим ответам.

Что касается заголовка "Expires", он обозначает дату и время, когда ресурс становится недействительным. Для установки этого заголовка мы можем воспользоваться middleware вместе с функцией header в Laravel. Вот пример кода для создания middleware, который добавляет заголовок "Expires" с соответствующей датой:

namespace AppHttpMiddleware;

use Closure;

class AddExpiresHeader 
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        $expires = // ваш код для определения даты истечения ресурса

        $response->header('Expires', $expires);

        return $response;
    }
}

Как и в предыдущем примере, регистрируем middleware в файле AppHttpKernel.php:

protected $middleware = [
    // ...
    AppHttpMiddlewareAddExpiresHeader::class,
];

Теперь заголовок "Expires" будет автоматически добавляться ко всем исходящим ответам.

Обратите внимание, что код для определения даты последнего изменения ресурса и даты истечения ресурса должен быть реализован вами, исходя из ваших потребностей и логики приложения.