라라벨에서 제공하는 캐싱 도구는 사용하기 매우 쉽습니다. 매뉴얼에는 get, put, 잊어버리기, 영원히 등과 같은 몇 가지 기본적인 사용법이 소개되어 있습니다. 처음에는 다음과 같이 사용했습니다.
if (!$article = Cache::get('article_1')) {
$article = 기사::find(1);
캐시::forever('article_1',$article);
}
가장 기본적인 사용법입니다. 캐시가 존재하는지 자동으로 확인합니다. 캐시가 없으면 데이터베이스에서 가져와서 캐시에 기록합니다.
나중에 모델에 Remember 및 RememberForever 메소드도 함께 제공된다는 사실을 발견했습니다. 예를 들면 다음과 같습니다.
$article = 기사::rememberForever('article_1')->where('id','=',1);
복잡한 쿼리 중에는 데이터를 완전히 캐시할 수 없습니다. 예를 들어 with()를 사용하여 관련 데이터를 미리 로드하는 경우 관련 데이터를 캐시할 수 없습니다.
그러다가 Cache가 Response와 같은 매크로 메소드를 사용자 정의할 수도 있다는 사실을 발견하고 다음을 시도했습니다.
//캐시 접근 매크로 등록
캐시::macro('want',function($key,$ Minutes=0,$callback){
If (!$data = Cache::get($key)) {
$data = call_user_func($callback);
if ($분 == 0) {
캐시::forever($key,$data);
} else {
캐시::put($key,$data,$분);
}
}
$data 반환;
});
이 메소드는 bootstrap/start.php에 배치하거나 필터의 App::before()에 배치할 수 있습니다. 사용 방법을 살펴보겠습니다.
$id = 입력::get('id');
$article = Cache::want('article_'.$id,0,function() 사용 ($id){
기사 반환::with('tags')->findOrFail($id,['id','cid','title','content_html as content','created_at','updated_at']);
});
저는 개인적으로 이런 글을 좋아합니다. 여러분 모두가 이 기사의 내용을 좋아하길 바랍니다.