🎉🎉 Larasense is officially launched 🎉🎉
- Your Hub for Laravel News, Trends & Updates

php artisan cache:clear - What it DOES and what it does NOT?

laravel
artisan
cache
Nabil Hassen
Nabil Hassen
Dec 3, 2024
Clear cache in Laravel
Last updated on Dec 5, 2024
Table of contents:

The Story Behind This Article

In one of my recent blog posts published last week, there was some misunderstanding about what certain Laravel Artisan commands do behind the scenes. In that blog post, I shared an opinionated, custom Laravel deployment script that included the following two commands in this order:

# Optimize view, routes, events, configs
php artisan optimize
 
# Clear caches
php artisan cache:clear

This sparked a lot of criticism. Many believed that the commands above were being executed in the wrong order:

  1. The first command caches certain data.
  2. The second command deletes what was cached by the first command.

This, however, is a misunderstanding.

php artisan cache:clear vs. optimize vs. optimize:clear

Let’s first look at how Laravel defines these commands:

  • php artisan cache:clear - Flushes the application cache.

  • php artisan optimize - When deploying your application to production, there are a variety of files that should be cached, including your configuration, events, routes, and views. Laravel provides a single, convenient optimize Artisan command that will cache all of these files.

Both definitions use the word "cache," but they refer to entirely different things. Let’s start with the optimize command.

The optimize command caches events, configurations, routes, and views in files. It does not interact with your actual cache driver (e.g., Redis, database, Memcached, etc.). All the cache files generated by optimize are stored in directories within the /storage/framework directory. This means that php artisan optimize and php artisan cache:clear have no relationship whatsoever.

If you’re wondering how to remove the cache files created by the optimize command, unfortunately, there isn’t a specific command to do only that.

The php artisan cache:clear command only flushes data from your cache drivers, it does not interact with the cache files created by the optimize command.

The Role of php artisan optimize:clear

There’s also the php artisan optimize:clear command. However, this command does more than just remove the cache files created by optimize; it also removes compiled classes and flushes data from your actual cache driver.

As explained by Laravel:

The optimize:clear method may be used to remove all of the cache files generated by the optimize command as well as all keys in the default cache driver.

It removes all files created by the optimize command, flushes you application cache, and removes compiled classes.

This means that optimize:clear performs additional tasks that you might not want. If your goal is to remove only the cache files generated by optimize, you’ll need to run the relevant Artisan commands manually:

php artisan view:clear
php artisan route:clear
php artisan event:clear
php artisan config:clear

Conclusion

It’s important to understand the difference between php artisan cache:clear, php artisan optimize, and php artisan optimize:clear to avoid unnecessary confusion. While all these commands involve “cache,” they deal with completely different things. Misunderstanding their purpose can lead to unnecessary operations or even unintended issues during deployment. By knowing what each command does—and doesn’t do—you can make better decisions for your Laravel projects. So next time you deploy, you’ll know exactly what’s happening behind the scenes.

Nabil Hassen
Nabil Hassen
Full Stack Web Developer

Stay Updated.

I'll you email you as soon as new, fresh content is published.

Thanks for subscribing to my blog.

Latest Posts