6 kind of caches in Laravel & how to clear them for debugging

Laravel’s logo.

Why and how to clear general cache in Laravel

First, we all know the general cache in Laravel. This is where you can store all your expensive values (meaning that they take time to compute).

php artisan cache:clear

Why and how to clear config cache in Laravel

Some config values are fetched from your environment file and it can be a bit slow. Luckily, Laravel can cache them to help us speed up our applications.

php artisan config:clear

Why and how to clear events cache in Laravel

Laravel’s automatic event discovery is beneficial. You don’t need to register listeners manually anymore thanks to this tiny change you can make in your EventServiceProvider.



class EventServiceProvider extends ServiceProvider
{


public function shouldDiscoverEvents() : bool
{
return true;
}
}
php artisan event:clear

Why and how to clear routes cache in Laravel

Laravel’s routes are an essential part of your web application or API. Resolving a route can take time if you have a lot of them and as you guessed, caching helps for that.

php artisan route:clear

Why and how to clear scheduled tasks cache in Laravel

Let’s say you have a recurring task that takes so much time to complete it will overlap with its next occurrence. You can prevent it until the previous one has finished:

$schedule->command('some:task')->withoutOverlapping();
php artisan schedule:clear-cache

Why and how to clear views cache in Laravel

Blade directives are compiled and cached even in your local environment. Sometimes though, compiled views can conflict with a recent change in your code. Again, you have a command for that:

php artisan view:clear

How to clear every cache in Laravel

Finally, let’s see the ultimate cache-busting command.

php artisan optimize:clear
  • Config
  • Compiled classes cache
  • Events
  • General Cache
  • Routes
  • Views


class OptimizeClearCommand extends Command
{


public function handle()
{
$this->components->info('Clearing cached bootstrap files.');

collect([
'events' => fn () => $this->callSilent('event:clear') == 0,
'views' => fn () => $this->callSilent('view:clear') == 0,
'cache' => fn () => $this->callSilent('cache:clear') == 0,
'route' => fn () => $this->callSilent('route:clear') == 0,
'config' => fn () => $this->callSilent('config:clear') == 0,
'compiled' => fn () => $this->callSilent('clear-compiled') == 0,
])->each(fn ($task, $description) => $this->components->task($description, $task));

$this->newLine();
}
}

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Benjamin Crozat

Benjamin Crozat

Full-stack Laravel developer passionate about the TALL stack. Big appetite for UI and UX design.