欧美国产另类久热|951超碰伊人久久|伊人影视久久久久|色婷婷亚洲小电影|色东京热69XX|婷婷玖玖深爱网|加勒比东京热网站|无码A级毛片在线观看|一级a毛一级a看|中文字幕人妻欧美

分享一個Laravel好用的Cache宏
來源:易賢網 閱讀:3304 次 日期:2015-03-04 11:01:37
溫馨提示:易賢網小編為您整理了“分享一個Laravel好用的Cache宏”,方便廣大網友查閱!

Laravel提供的緩存工具很好用,手冊里介紹了一些基本的用法,比如get,put,forget,forever等,一開始我是像下面這樣使用的:

代碼如下:

if (!$article = Cache::get('article_1')) {

$article = Article::find(1);

Cache::forever('article_1',$article);

}

這是最基本的用法,自動判斷緩存是否存在,不存在則從數(shù)據庫中取并寫入緩存。

后來發(fā)現(xiàn)模型也自帶remember 和 rememberForever方法,例如可以這樣:

代碼如下:

$article = Article::rememberForever('article_1')->where('id','=',1);

這個有局限性,在復雜查詢時并不能完全緩存數(shù)據,比如使用了with()預加載關聯(lián)數(shù)據時就無法緩存關聯(lián)數(shù)據。

然后發(fā)現(xiàn)Cache也可以像Response那樣自定義宏方法,遂作如下嘗試:

代碼如下:

//注冊緩存存取宏

Cache::macro('want',function($key,$minutes=0,$callback){

if (!$data = Cache::get($key)) {

$data = call_user_func($callback);

if ($minutes == 0) {

Cache::forever($key,$data);

} else {

Cache::put($key,$data,$minutes);

}

}

return $data;

});

這個方法可以放在bootstrap/start.php里,也可以放在filter中的App::before()中,隨自己項目方便吧,看下如何使用的:

代碼如下:

$id = Input::get('id');

$article = Cache::want('article_'.$id,0,function() use ($id){

return Article::with('tags')->findOrFail($id,['id','cid','title','content_html as content','created_at','updated_at']);

});

個人挺喜歡這種寫法的。希望大家能夠喜歡本文內容。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:分享一個Laravel好用的Cache宏
關于我們 | 聯(lián)系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網