abordage/laravel-last-modified

Setting the Last-Modified header and 304 Not Modified response code if the page hasn't changed since the last visit
19,272 12
Install
composer require abordage/laravel-last-modified
Latest Version:1.0.0
PHP:^8.2
License:MIT
Last Updated:Jun 19, 2026
Links: GitHub  ·  Packagist
Maintainer: abordage

Last-Modified / 304 Not Modified Handler for Laravel

Easily setting the Last-Modified header and 304 Not Modified response code.

Requirements

  • PHP 8.2+
  • Laravel 11.x / 12.x

Installation

You can install the package via composer:

composer require abordage/laravel-last-modified

Optionally, you can publish the config file with:

php artisan vendor:publish --tag="last-modified-config"

Usage

The setup is very simple and consists of two steps:

Registering middleware

// in bootstrap/app.php

->withMiddleware(function (Middleware $middleware) {
    $middleware->web(append: [
        \Abordage\LastModified\Middleware\LastModifiedHandling::class,
    ]);
})

Set Last Update Date in your Controller

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
use LastModified;
 
class PostController extends Controller
{
    public function show($id)
    {
        $post = \App\Models\Post::findOrFail($id);

        LastModified::set($post->updated_at);
        
        return view('posts.show', ['post' => $post]);
    }
}

It's all. Now you can check the headers.

How to check headers

You can check headers in the browser console under the Network tab (make sure Disable Cache is off)

or

using https://last-modified.com/en

Testing

composer test:all

or

composer test:phpunit
composer test:phpstan
composer test:phpcsf

or see https://github.com/abordage/laravel-last-modified/actions/workflows/tests.yml

Feedback

If you have any feedback, comments or suggestions, please feel free to open an issue within this repository.

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

641,106,524 9,700
laravel/framework

The Laravel Framework.

589,172,971 34,950
laravel/tinker

Powerful REPL for the Laravel framework.

498,216,183 7,442
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

413,412,504 609
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

394,964,158 4,660

Version History

Version Released PHP Laravel License
1.0.0 ^8.2 ^11.0 || ^12.0 MIT
0.2.1 >=7.4 ^8.0 || ^9.0 || ^10.0 || ^11.0 MIT
0.2.0 >=7.4 ^8.0 || ^9.0 || ^10.0 MIT
0.1.4 >=7.4 ^8.0 || ^9.0 MIT
0.1.3 >=7.4 ^8.0 || ^9.0 MIT