私の見解の1つに例外があります。ただし、ビューの名前を教えてそれを見つけて修正できるようにする代わりに、laravelはapp/storage/views/110a3ecc0aa5ab7e6f7f50ef35a67a8b
、これは無意味です。
laravelが実際のファイルを使用して参照するように、このビューのキャッシュを無効にするにはどうすればよいですか?
箱から出して?できません。ただし、BladeCompilerクラスを拡張して、ビューの有効期限が切れているかどうかを確認するためのメソッドをオーバーライドできます。
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']),
];
溶液
php.iniを開きます
opcache.revalidate_freq=0
opcache.fast_shutdown=0
これに変更します。 Apacheを再起動します。
.envファイルを確認しますCACHE_DRIVER = fileをCACHE_DRIVER = arrayに変更します
これを大ざっぱと呼ぶ人もいますが、これは私が取り組んでいた小さなアプリケーションでこれを行うための最速かつ最小の方法でした
私のルートが指し示したコントローラー上:
public function __construct()
{
exec('php /full/path/to/artisan view:clear');
}
Laravelは、ビューキャッシュファイルを作成するように指示されているため、作成します。 .env
出会うファイルcache_driver
はfile
としてデフォルトのプロパティを持ち、array
に変更します。