Laravel 의 좋 은 Cache 매크로 를 공유 합 니 다.

Laravel 이 제공 하 는 캐 시 도 구 는 매우 쓰기 좋 습 니 다.수첩 에 기본 적 인 용법 을 소개 하 였 습 니 다.예 를 들 어 get,put,forget,forever 등 입 니 다.처음에 저 는 아래 와 같이 사 용 했 습 니 다.

if (!$article = Cache::get('article_1')) {
    $article = Article::find(1);
    Cache::forever('article_1',$article);
}
이것 은 가장 기본 적 인 용법 으로 캐 시가 존재 하 는 지 여 부 를 자동 으로 판단 하고 존재 하지 않 으 면 데이터베이스 에서 캐 시 를 가 져 와 기록 합 니 다.
나중에 모델 도 remember 와 remember Forever 방법 을 가지 고 있 는 것 을 발견 했다.예 를 들 어 이렇게 할 수 있다.

$article = Article::rememberForever('article_1')->where('id','=',1);
이것 은 한계 가 있 습 니 다.복잡 한 조회 시 데 이 터 를 완전히 캐 시 할 수 없습니다.예 를 들 어 with()를 사용 하여 관련 데 이 터 를 미리 불 러 올 때 관련 데 이 터 를 캐 시 할 수 없습니다.
그리고 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;
});
이 방법 은 boottstrap/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']);
});
개인 적 으로 이런 문법 을 매우 좋아한다.여러분 들 이 본문 내용 을 좋아 하 시 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기