Laravel: Clearing Cache with a click of a button (Artisan Shortcuts)
In this tutorial we will learn how to purge compiled views and cache by using Laravel Commands.
Switching back and forth between applications might be cumbersome during development for some folks who have a single monitor. Thanks to the commands in Laravel, we can create and call those commands from anywhere.
Before you begin, keep in mind that you should only use this method for Development purposes. Because purging and re-caching might effect your site’s performance
Let’s start by creating a controller for our operations like this:
php artisan make:controller DevClearCacheController
Now add following methods to DevClearCacheController class like this:
<?php
namespace App\Controllers;
class DevClearCacheController extends Controller
{
public function clear_views()
{
\Artisan::call('view:clear');
return redirect()->back()->with('status','Views Cleared!');
}
public function clear_cache()
{
\Artisan::call('cache:clear');
return redirect()->back()->with('status','Cache Cleared!');
}
// you can also add methods for queue:start, queue:restart etc.
}
Now let’s add these to the web.php file in the routes directory.
<?php
...
Route::get('clear-views', '[email protected]_views')
->name('clear-views');
Route::get('clear-cache', '[email protected]_cache')
->name('clear-cache');
...
Now, let’s create a view that contains our buttons (I prefer to add these in navbar
):
<!DOCTYPE html>
<html lang="{{ App::getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Artisan Shortcuts') }}</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css">
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<ul class="nav navbar-nav">
<li><a href="{{ route('clear-views') }}">Clear Views</a></li>
<li><a href="{{ route('clear-cache') }}">Clear Cache</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="body-content">
@if (session('status'))
<div class="alert alert-success">{{ session('status') }}</div> @endif
<p>Test App</p>
</div>
</body>
</html>
Now let’s test our application, the result will be similar to the following:
Originally published at tahirjan.com.
Please click 👏 button below a few times to show your support! ⬇⬇ Thanks!