【问题标题】:Laravel 5 Clear Views CacheLaravel 5 清除视图缓存
【发布时间】:2015-05-23 00:15:28
【问题描述】:

我注意到 Laravel 缓存视图存储在 ~/storage/framework/views. 中,随着时间的推移,它们会占用我的空间。如何删除它们?有什么命令可以吗?我试过php artisan cache:clear,,但它没有清除视图缓存。有了这个,我必须手动删除上述文件夹中的文件。

另外,如何禁用视图缓存?

【问题讨论】:

  • “加班,他们会吃掉我的空间。”不太可能。我维护的一个大型 Laravel 应用程序有大约 300KB 的缓存视图,用于大约 500 条路由。由于任何现代服务器上的缓存视图,您永远不会用完。
  • 但问题是我的托管服务提供商不受磁盘空间使用的限制。相反,它受到您拥有的文件数量的限制。所以这对我来说是个问题。
  • 这很奇怪,你在storage/framework/views 中的数百个文件与vendor 中的数千个文件相比根本算不上什么。找一个没有这种荒谬疯狂限制的主机。限制文件数量? WTF?!
  • 你能推荐一个很棒的主机吗?最好是共享主机。我不确定是否允许我分享我当前托管服务提供商的名称。不过,这是一家大公司。
  • 如果你不是太技术,我会选择像 Heroku 这样的地方,或者如果你是亚马逊网络服务。如果您当前的主机确实限制了文件数量而不是总使用空间,那么它们就是疯了。

标签: php caching laravel laravel-5 laravel-artisan


【解决方案1】:

自 Laravel 5.1 起,现在有一个用于此任务的 php artisan view:clear 命令

【讨论】:

  • 很高兴知道这一点。我注意到一件事,随着时间的推移,views 文件夹下的缓存被删除了。代码中有什么东西会在 xx 天内删除它们吗?
  • 我相信它的存在时间比这长一点 :)
【解决方案2】:

要获取所有 artisan 命令,请键入...

php artisan

如果要清除视图缓存,只需使用:

php artisan view:clear

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

php artisan help view:clear

【讨论】:

    【解决方案3】:

    请尝试以下命令:

    sudo php artisan cache:clear
    
    sudo php artisan view:clear
    
    sudo php artisan config:cache
    

    【讨论】:

    • 制造商确保您artisan config:cache 是否所有您的.env 变量是通过config() 而不是env() 访问的,否则它们将为空。跨度>
    • @FlashJordan 我希望在运行 config:cache 之前阅读您的评论。哈哈。对于像我一样盲目运行 config:cache 的其他人,只需从 bootstrap/cache 中删除 config.php。
    • 你刚刚救了我的眼泪和悲伤。我一直想知道为什么我的更改没有奏效。
    • 为什么要使用 sudo tho?
    【解决方案4】:

    回答您的其他问题如何禁用视图缓存:

    您可以通过使用 DilipGurung 提到的命令php artisan view:clear 自动删除文件夹中的文件来执行此操作。这是来自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);
        }
    }
    

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

    【讨论】:

      【解决方案5】:

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

      可以通过跳过刀片来禁用缓存。视图缓存已经完成,因为刀片每次编译都是浪费时间。

      【讨论】:

      【解决方案6】:

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

      sudo php artisan cache:clear
      
      sudo php artisan view:clear
      
      sudo php artisan config:cache
      

      【讨论】:

        【解决方案7】:

        在终端中使用下面的命令

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

        【讨论】:

          【解决方案8】:

          这是我为我的项目解决此问题而编写的助手。它让您能够通过一个命令快速清除所有内容变得超级简单和容易。

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

          【讨论】:

          • 看看使用的命名空间。确保它在正确的文件夹路径中,或者如果你改变了它。确保您相应地更新它。 @samjadps
          • 我更新了我的命名空间。现在应该为您工作而无需做任何事情。只需确保将其设置在控制台/命令文件夹中即可。
          猜你喜欢
          • 2017-01-29
          • 1970-01-01
          • 2018-06-04
          • 1970-01-01
          • 2015-11-24
          • 2016-05-30
          • 2019-10-14
          • 1970-01-01
          • 2021-10-16
          相关资源
          最近更新 更多