ChatGPT解决这个技术问题 Extra ChatGPT

Laravel 5 Clear Views Cache

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?

"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.
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.
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?!
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.
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.

m
maxxon15

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


Good to know that. One thing I notice, over time, the cache under the views folder gets deleted. Is there something in the code that deletes them in xx days?
I believe it's been around a bit longer than that :)
T
Tim

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

U
Uddyan Semwal

please try this below command :

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache

Maker sure if you artisan config:cache that all of your .env variables are accessed via config(), not env() or they'll be null.
@FlashJordan I wish I'd read your comment before running config:cache. lol. For anyone else that runs config:cache as blindly as I did, just delete config.php from bootstrap/cache.
You just saved me tears and sorrow. I have been wondering why my changes haven''t been working.
Why use sudo tho?
M
Mosam Prajapati

in Ubuntu system try to run below command:

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache

A
Adam

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.


A
ArjanSchouten

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.


I got a good explanation on this here stackoverflow.com/questions/31455829/…
U
Uddyan Semwal

use Below command in terminal

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

k
kray

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


Take a look at the namespace used. make sure its in the correct folder path, or if youve changed it. make sure you update it accordingly. @samjadps
I updated the namespace on my end. Should work now for you without doing anything. Just make sure its set in the console/commands folder.