infusionweb/laravel-middleware-response-cache

Provides caching of HTML pages in Laravel responses.

0.1.0 2016-04-06 19:24 UTC

This package is auto-updated.

Last update: 2024-10-28 10:14:43 UTC


README

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.