183
votes

I notice that Laravel cache views are stored in ~/storage/framework/views. Over time, they get to eat up my space. How do I delete them? Is there any command that could? I tried php artisan cache:clear, but it is not clearing the views cache. With that, I have to manually delete the files in the said folder.

Also, how do I disable the views caching?

8
"Overtime, they get to eat up my space." Unlikely. A large Laravel app I maintain has about 300KB of cached views for about 500 routes. You'll never run out due to cached views on any modern server.ceejayoz
But the problem is that my hosting provider is not limiting by disk space usage. Instead, it is limiting by the number of files that you have. So it is an issue for me.basagabi
That's bizarre, and your couple hundred files in storage/framework/views is nothing next to the thousands of files in vendor. Get a host that doesn't have absurd insane limitations like that. Limiting by number of files? WTF?!ceejayoz
Could you recommend a great hosting for that? Preferably shared hosting. Im not sure if I am allowed to share the name of my current hosting provider. It's a big comany, though.basagabi
I'd go with somewhere like Heroku if you aren't too technical, or Amazon Web Services if you are. If your current host genuinely limits the number of files and not the total used space, they're insane.ceejayoz

8 Answers

316
votes

There is now a php artisan view:clear command for this task since Laravel 5.1

36
votes

To get all the artisan command, type...

php artisan

If you want to clear view cache, just use:

php artisan view:clear

If you don't know how to use specific artisan command, just add "help" (see below)

php artisan help view:clear
17
votes

please try this below command :

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache
7
votes

To answer your additional question how disable views caching:

You can do this by automatically delete the files in the folder for each request with the command php artisan view:clear mentioned by DilipGurung. Here is an example Middleware class from https://stackoverflow.com/a/38598434/2311074

<?php
namespace App\Http\Middleware;

use Artisan;
use Closure;

class ClearViewCache
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (env('APP_DEBUG') || env('APP_ENV') === 'local') 
            Artisan::call('view:clear');

        return $next($request);
    }
}

However you may note that Larevel will recompile the files in the /app/storage/views folder whenever the time on the views files is earlier than the time on the PHP blade files for the layout. THus, I cannot really think of a scenario where this would be necessary to do.

6
votes

Right now there is no view:clear command. For laravel 4 this can probably help you: https://gist.github.com/cjonstrup/8228165

Disabling caching can be done by skipping blade. View caching is done because blade compiling each time is a waste of time.

4
votes

in Ubuntu system try to run below command:

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache
2
votes

use Below command in terminal

php artisan cache:clear
php artisan route:cache 
php artisan config:cache 
php artisan view:clear
0
votes

Here is a helper that I wrote to solve this issue for my projects. It makes it super simple and easy to be able to clear everything out quickly and with a single command.

https://github.com/Traqza/clear-everything