web-dev-qa-db-ja.com

Laravelビューキャッシュを無効にするにはどうすればよいですか?

私の見解の1つに例外があります。ただし、ビューの名前を教えてそれを見つけて修正できるようにする代わりに、laravelはapp/storage/views/110a3ecc0aa5ab7e6f7f50ef35a67a8b、これは無意味です。

laravelが実際のファイルを使用して参照するように、このビューのキャッシュを無効にするにはどうすればよいですか?

17
Benubird

箱から出して?できません。ただし、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を再起動します。

8
veyselsahin

.envファイルを確認しますCACHE_DRIVER = fileをCACHE_DRIVER = arrayに変更します

3
Joshua Oluikpe

これを大ざっぱと呼ぶ人もいますが、これは私が取り組んでいた小さなアプリケーションでこれを行うための最速かつ最小の方法でした

私のルートが指し示したコントローラー上:

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

Laravelは、ビューキャッシュファイルを作成するように指示されているため、作成します。 .env出会うファイルcache_driverfileとしてデフォルトのプロパティを持ち、arrayに変更します。

0
Prem Sarojanand