Laravel 5 清除视图缓存

200
我注意到Laravel缓存视图被存储在~/storage/framework/views.随着时间的推移,它们会占用我的空间。我该如何删除它们?是否有任何命令可以清除它们?我尝试了php artisan cache:clear,但它没有清除视图缓存。因此,我必须手动删除该文件夹中的文件。
另外,我该如何禁用视图缓存?

4
随着时间的推移,它们会占用我的空间。不太可能。我维护的一个大型Laravel应用程序有大约300KB的缓存视图,涵盖了大约500个路由。在任何现代服务器上,您永远不会因为缓存视图而耗尽空间。 - ceejayoz
4
问题在于我的托管提供商并没有限制磁盘空间的使用,而是通过文件数量来进行限制。因此,这对我来说是个问题。 - basagabi
12
真是太奇怪了,你在storage/framework/views中的几百个文件与vendor中的成千上万个文件相比微不足道。找一个没有如此荒谬疯狂限制的主机吧。以文件数量为限制?真是令人匪夷所思! - ceejayoz
2
如果您不太熟练,我会建议您使用Heroku之类的平台;如果您拥有技术背景,可以考虑使用Amazon Web Services。如果您目前的托管服务商实际上限制了文件数量而非总空间,那他们简直就是疯了。 - ceejayoz
@ceejayoz “随着时间的推移,它们会占用我的空间。” 很可能!我的当前应用程序已经有超过500 MB的缓存视图,并且还在增长。 - Matt K
显示剩余2条评论
8个回答

342

从Laravel 5.1开始,现在有一个php artisan view:clear命令来执行此任务。


1
很高兴知道这个。我注意到一件事,随着时间的推移,视图文件夹下的缓存会被删除。代码中是否有什么东西会在xx天后将它们删除? - basagabi
我相信它已经存在了比那更久的时间 :) - Oddman

37

要获取所有的Artisan命令,请输入...

php artisan

如果您想清除视图缓存,请使用:

php artisan view:clear
如果您不知道如何使用特定的工匠命令,只需添加“help”(见下文)。

如果您不知道如何使用特定的工匠命令,只需添加“help”(见下文)

php artisan help view:clear

19

请尝试使用以下命令:

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache

3
请确保在运行artisan config:cache之前,所有.env变量都通过config()函数访问,而非env()函数,否则它们将为null。 - FlashJordan
1
@FlashJordan,真希望在运行config:cache之前读了你的评论。哈哈。对于像我这样盲目运行config:cache的人,只需从bootstrap/cache中删除config.php即可。 - Tarek Adam
你刚刚帮我避免了泪水和悲伤。我一直在想为什么我的更改没有生效。 - rotimi-best
为什么要使用sudo呢? - Adam Fowler

9

在Ubuntu系统中尝试运行以下命令:

sudo php artisan cache:clear

sudo php artisan view:clear

sudo php artisan config:cache

7

回答你额外的问题:如何禁用视图缓存:

您可以通过使用DilipGurung提到的php artisan view:clear命令自动删除每个请求的文件夹中的文件来实现此目的。这里是一个示例Middleware类,来自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);
    }
}

不过,你可能会注意到 Laravel 会在视图文件的时间早于布局文件的时间时重新编译 /app/storage/views 文件夹中的文件。因此,我真的想不出有必要这样做的场景。


6

目前还没有view:clear命令。对于laravel 4,这个链接可能会有所帮助:https://gist.github.com/cjonstrup/8228165

禁用缓存可以通过跳过blade实现。视图缓存是因为每次编译blade都是浪费时间。


我在这里得到了一个关于此的好解释 https://dev59.com/PFwZ5IYBdhLWcg3wb_-Y - Rinto George

5

在终端中使用以下命令:

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

0

看一下所使用的命名空间。确保它在正确的文件夹路径中,或者如果你已经更改了它,确保相应地进行更新。@samjadps - levi
我已经在我的端更新了命名空间。现在应该可以直接使用,无需进行任何操作。只需确保它在控制台/命令文件夹中设置即可。 - levi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接