我在我的一個觀點中有個例外。然而,laravel並沒有告訴我視圖的名稱,所以我可以找到它並修復它,這是app/storage/views/110a3ecc0aa5ab7e6f7f50ef35a67a8b
,這是沒有意義的。如何禁用Laravel視圖緩存?
如何禁用此視圖緩存,以便laravel使用並引用實際文件?
我在我的一個觀點中有個例外。然而,laravel並沒有告訴我視圖的名稱,所以我可以找到它並修復它,這是app/storage/views/110a3ecc0aa5ab7e6f7f50ef35a67a8b
,這是沒有意義的。如何禁用Laravel視圖緩存?
如何禁用此視圖緩存,以便laravel使用並引用實際文件?
開箱即用?你不能。但是,您可以擴展BladeCompiler類,覆蓋方法resposible因爲如果認爲已經過期檢查:
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);
});
然後你只需要創建在您的應用程序/配置/ view.php文件
<?php
return [
'cache' => false,
'paths' => [base_path().'/resources/views'],
'pagination' => 'pagination::slider-3',
];
該密鑰,或者,像我在這裏做的:
return [
'cache' => in_array(App::environment(), ['production', 'staging']),
];
我可以在哪裏放第二部分的代碼?在AppServiceProvider中? – phaberest 2016-05-09 14:45:41
我試圖添加AppServiceProvider,但它不調用isExpired方法。另外bindShared在5中被重命名爲singleton。5 – Aleksandrs 2017-12-13 12:05:00
在開發環境中,我只是添加和修改了下:
bootstrap/start.php
$env = $app->detectEnvironment(function(){return 'testing';});
app/config/testing/cache.php
加入陣列
'cache' => false,
app/config/view.php
加在陣列
'cache' => false,
不起作用。這可能是由於laravel版本 - 我目前使用4.1;這是更改後的版本? – Benubird 2014-12-30 09:30:29
解
打開php.ini
opcache.revalidate_freq=0
opcache.fast_shutdown=0
改變此。重啓apache。
這與laravel有什麼關係? – Benubird 2015-06-15 09:03:31
我不知道如何但這解決了我的問題。 – veyselsahin 2015-06-15 21:31:27
然後可能你的問題不是laravel緩存,而是php緩存 - 這些設置與php opcache相關,這與laravel視圖緩存不同。 – Benubird 2015-06-16 13:22:21
雖然有些人把這種粗略的,這是爲了做到這一點對一個小的應用程序我工作
在控制器(S),我的路由指向的最快和最起碼的辦法:
public function __construct()
{
exec('php /full/path/to/artisan view:clear');
}
[Laravel和開發中的視圖緩存可能重複 - 無法立即看到變化](http://stackoverflow.com/questions/20579182/laravel-and-view-caching-in-development-cant-see - 立即更改) – RobbieP 2014-09-12 19:34:28
@RobbieP該問題涉及到php緩存,並且是一個完全獨立的問題。我的問題特別是關於laravel的內置視圖緩存系統,而不是重複的。 – Benubird 2014-09-16 10:36:16
我一定誤解了你的問題。 Laravel需要在渲染之前編譯刀片文件,因此我不確定您能夠看到哪個命名視圖出現錯誤,但是您可以打開編譯視圖。看@安東尼奧的答案在這裏http://stackoverflow.com/a/19866546/942846 – RobbieP 2014-09-16 11:14:36