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

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

代碼如下:

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

$article = Article::find(1);

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

}

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

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

代碼如下:

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

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

然后發(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']);

});

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

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:分享一個Laravel好用的Cache宏

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)