Laravel: Clearing Cache with a click of a button (Artisan Shortcuts)

Syed Tahir Ali Jan
Quick Code
Published in
2 min readFeb 1, 2018
Copyright: https://blog.42mate.com

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!

--

--

Syed Tahir Ali Jan
Quick Code

Hi I'm a software engineer by profession, I love to program and encourage others to learn to code. https://tahirjan.com