Как отключить кеш-просмотр Laravel?

У меня есть исключение в одном из моих представлений. Однако, вместо того, чтобы указывать мне имя представления, чтобы я мог его найти и исправить, laravel говорит, что он находится в app/storage/views/110a3ecc0aa5ab7e6f7f50ef35a67a8b, что бессмысленно.

Как отключить кэширование этого представления, так что laravel использует и ссылается на фактические файлы?

Ответ 1

Из коробки? Вы не можете. Но вы можете расширить класс BladeCompiler, переопределяя метод, который может быть проверен, если проверка была истек.

class MyBladeCompiler extends BladeCompiler {

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

        return parent::isExpired($path);
    }

}

Вам нужно будет заменить экземпляр BladeCompiler в контейнере IoC своим собственным компилятором:

$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']),

];

Ответ 2

Решение

открыть php.ini

opcache.revalidate_freq=0
opcache.fast_shutdown=0

измените это. перезапустите apache.

Ответ 3

проверьте файл .env. Измените CACHE_DRIVER = файл на CACHE_DRIVER = массив

Ответ 4

Хотя некоторые назвали бы это отрывочным, это был самый быстрый и самый минимальный способ сделать это на небольшом приложении, над которым я работал

На контроллере (-ах), на который указывались мои маршруты:

public function __construct()
{
    exec('php /full/path/to/artisan view:clear');
}

Ответ 5

Laravel Создает файл кэша представления, потому что ему было сказано сделать это. В файле .env вы встретите cache_driver который имеет свойство по умолчанию, поскольку file меняет его на array.

Ответ 6

это сработало для меня... добавил это в файл .env

CACHE_EXPIRE=-1

Ответ 7

Если у вас есть artisan, легко очистить кеш

php artisan view:clear

Если у вас нет или не хотите artisan (не могу понять, почему вы этого не хотите, это очень полезно), вы можете из корня своего проекта сделать

cd storage/framework/views/
rm *.php

Ответ 8

В среде разработки я просто добавляю и изменяю следующее:

  • bootstrap/start.php

    $env = $app->detectEnvironment(function(){return 'testing';});
    
  • app/config/testing/cache.php добавить в массив

    'cache' => false,
    
  • app/config/view.php добавить в массив

    'cache' => false,