$ composer require stounhandj/laravel-cache-route
Or
{
"require": {
"stounhandj/laravel-cache-route": "^v1.1"
}
}
Add middleware to the file kernel.php:
'cache.page' => \StounhandJ\LaravelCacheRoute\Middleware\CacheRoteMiddleware::class,
Now, use the middleware to cache the HTML output of an entire page from your route like so:
-
In your route:
Route::get('/', function () { // })->middleware("cache.page")
You may also use route groups. Please look up Laravel documentation on Middleware to learn more here
You can configure the TTL (Time-To-Live) to cast per second:
- In your route:
Route::get('/', function () { // })->middleware("cache.page:10")
- Environment (On all routes at once):
CACHE_TTL=10
Be VERY cautions when using a whole page cache such as this. Remember contents of the cache are visible to ALL your users.
- For, "mostly static" content, go for it!
- For, "mostly dynamic" content or heavily user-customized content, AVOID this strategy. User specific information is gathered server side. So, you essentially WANT to hit the server.
Good rule of thumb: If two different users see different pages on hitting the same URL, DO NOT cache the output using this strategy. An alternative may be to cache database queries.