Как отключить кеш-просмотр 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,