Laravel 4.X yada 5.X sürümlerinde çeşitli cache(önbellek) yapma işlemleri bulunmaktadır.En basit yolla projenizi cache yapıp açılış hızlarını daha iyi bir duruma getirebilirsiniz.Bidiğiniz üzere Laravel ile orta ölçek ve üstü projelerde performans kaybı yaşanmaktadır.Bu işlem ile bu kaybı minimize yapabilirsiniz.
routes.php içine eklenecek kod örneği;
Route::filter('cache', function($route, $request, $response = null)
{
$key = 'route-'.Str::slug(Request::url());
if(is_null($response) && Cache::has($key))
{
return Cache::get($key);
}
elseif(!is_null($response) && !Cache::has($key))
{
Cache::put($key, $response->getContent(), 30);
}
});
Sadece bu kod eklemesi yeterli olmayacaktır.Hangi Controller dosyalarınızda before ve after filtrelerinde çalışacağını göstermek için aşağıdaki örnekteki gibi projenize ekleme yapabilirsiniz.
Route::get('/', array('before' => 'cache', 'after' => 'cache', 'uses' => 'IndexController@indexcalis'));
Ek olarak grup halinde oluşturulmuş bir rotanız varsa aşağıdaki şekilde bu rotalarıda cache içine alabilirsiniz.
Route::group(array('before' => 'cache', 'after' => 'cache'), function()
{
Route::get('/', 'HomeController@show');
Route::get('hakkimizda', 'AboutController@show');
Route::get('servisler', 'ServicesController@show');
Route::get('iletisim', 'ContactController@show');
});
Kodumuz filtre olarak hem önce hem sonra çalışmayı tetiklediği için rotalarınızda gelen response ve requestleride cache yapacaktır.
Oluşan tüm cache içeriğini aşağıdaki kodlarla temizleyebilirsiniz.
Cache::forget('cache');
Cache::flush();
Bu kodlar tarafımca bir projede kullanılmakta olup gayet başarılı oldugunu söylebilirim ayrıca yönetici panelinden cache silme işleminide yukarıdaki gibi yapmaktayım.