infusionweb / laravel-middleware-response-cache by rkeppner

Provides caching of HTML pages in Laravel responses.
2,437
5
1
Package Data
Maintainer Username: rkeppner
Maintainer Contact: russell.keppner@gmail.com (Russell Keppner)
Package Create Date: 2016-04-05
Package Last Update: 2016-06-14
Language: PHP
License: MIT
Last Refreshed: 2024-04-23 03:02:56
Package Statistics
Total Downloads: 2,437
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 5
Total Watchers: 1
Total Forks: 3
Total Open Issues: 2

Laravel HTML Response Cache Middleware

Provides caching of entire HTML responses in Laravel 5.

Installation

Via Composer

$ composer require infusionweb/laravel-middleware-response-cache

Laravel 5.1 Usage

Add the service provider

// within config/app.php

'providers' => [
    //
    InfusionWeb\Laravel\Http\Middleware\ResponseCacheServiceProvider::class,
];

Register as route middleware

// within app/Http/Kernel.php

protected $routeMiddleware = [
    //
    'cachebefore' => \InfusionWeb\Laravel\Http\Middleware\ResponseCacheBeforeMiddleware::class,
    'cacheafter' => \InfusionWeb\Laravel\Http\Middleware\ResponseCacheAfterMiddleware::class,
    //
];

Apply HTML response cache to routes

The following will cache the gallery route.

// within app/Http/routes.php

Route::get('gallery', ['middleware' => ['cachebefore', 'cacheafter'], function () {
    return 'pictures!';
}]);

Apply HTML response cache to controllers

The following will apply all default profiles to all methods within the GalleryController.

// within app/Http/Controllers/GalleryController.php

public function __construct()
{
    $this->middleware(['cachebefore', 'cacheafter']);
}

Laravel 5.2 Usage

Middleware can be registered the same as 5.1, or by the following method.

Add to route middleware group

// within app/Http/Kernel.php

protected $middlewareGroups = [
    'web' => [
        //
        'cachebefore' => \InfusionWeb\Laravel\Http\Middleware\ResponseCacheBeforeMiddleware::class,
        'cacheafter' => \InfusionWeb\Laravel\Http\Middleware\ResponseCacheAfterMiddleware::class,
        //
    ],
    //
];

Apply HTML response cache to routes

All routes using the web middleware group will be cached.

// within app/Http/routes.php

Route::group(['middleware' => ['web']], function () {
    Route::get('gallery', function () {
        return 'pictures!';
    });
});

Enable and configure response caching

The middleware will only cache HTML responses when explicitly enabled. This is to allow development systems to operate normally by default, while easily allowing production systems to cache HTML responses.

Publish the package config file

$ php artisan vendor:publish --provider="InfusionWeb\Laravel\Http\Middleware\ResponseCacheServiceProvider"

You may now enable response caching and change the default cache time by editing the config/response-cache.php file.

return [
    'enable' => env('RESPONSE_CACHE_ENABLE', false),

    // Length of time to cache the HTML response, in minutes.
    'length' => env('RESPONSE_CACHE_LENGTH', 60),
];

Credits

License

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