caching - 如何禁用 Laravel View 缓存?

标签 caching laravel blade

我的一个观点有一个异常(exception)。然而,laravel 没有告诉我 View 的名称以便我可以找到它并修复它,而是说它在 app/storage/views/110a3ecc0aa5ab7e6f7f50ef35a67a8b 中。 ,这是没有意义的。

如何禁用此 View 缓存,以便 laravel 使用并引用实际文件?

最佳答案

盒子外面?你不能。但是您可以扩展 BladeCompiler 类,覆盖用于检查 View 是否已过期的方法:

class MyBladeCompiler extends BladeCompiler {

    public function isExpired($path)
    {
        if ( ! \Config::get('view.cache'))
        {
            return true;
        }

        return parent::isExpired($path);
    }

}

你需要用你自己的编译器替换 IoC 容器中的 BladeCompiler 实例:
$app = App::make('app'); // or just $app = app();

$app->bindShared('blade.compiler', function($app)
{
    $cache = $app['path.storage'].'/views';

    return new MyBladeCompiler($app['files'], $cache);
});

然后你只需要在你的 app/config/view.php 文件中创建那个键
<?php

return [

    'cache' => false,

    'paths' => [base_path().'/resources/views'],

    'pagination' => 'pagination::slider-3',

];

或者,就像我在这里做的那样:
return [

    'cache' => in_array(App::environment(), ['production', 'staging']),

];

关于caching - 如何禁用 Laravel View 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25813251/

相关文章:

python - 从 Django 的缓存中删除特定项目?

php - 编写一个可选地只显示日期之间的记录的查询

laravel - 使用 Laravel,我如何创建一个更新一对多关系的 View ?

laravel-5 - 如何在 Laravel Blade 中定义一个变量

php - 我如何在 Laravel 5 中使用部分?

android - 从字符串数据的键获取 bool 数据后 SharedPreference 崩溃

c++ - 尝试访问二维 vector 元素时出现段错误

c# - 缓存被修改而不是局部变量(通过 ref 传递)

Laravel 5.5 - Redis::connect(): php_network_getaddresses: getaddrinfo 失败:名称或服务未知

php - Laravel 队列与 supervisord 打开太多 FIFO 文件