Laravel 캐시: 애플리케이션 성능 향상
6853 단어 cacheperformancelaravelphp
오늘은 캐싱 측면에서 애플리케이션 성능 향상에 대해 이야기하려고 합니다.
캐싱은 기본 데이터 원본 앞에 데이터 복사본을 저장하는 전략입니다.
캐싱의 이점에는 더 빠른 응답 시간과 데이터를 신속하게 제공하는 기능이 포함되어 있어 애플리케이션 및 사용자 경험의 성능을 향상시킬 수 있습니다.
애플리케이션에 캐시가 정말로 필요합니까? 개인적으로 저는 그렇습니다. 필요합니다.
응용 프로그램을 블록으로 분해하면 다음 그림을 얻을 수 있습니다.
이 기사에서는 주로 데이터베이스의 캐싱 결과에 대해 이야기합니다.
한 가지 주요 사항: Cache를 사용하기로 결정하기 전에 SQL 쿼리를 최적화했는지 확인하십시오. SQL 쿼리를 최적화하지 않은 상태로 두고 캐싱으로 인해 이 문제를 해결하려고 시도하는 것은 이치에 맞지 않습니다.
복잡한 where 절, 조인 등을 사용하여 매우 큰 테이블에 쿼리를 수행하는 경우 결과를 검색하는 데 시간이 걸릴 수 있습니다. 그리고 이것은 캐시하기에 좋은 장소입니다.
public function getProductsBlock(int $limit = 5)
{
return Products::query()
->indexed()
->whereHas("images", function(Builder $query) {
$query->active();
})
->with("images")
->with("comments")
->with("ratings")
->with("attributes")
->orderBy('id', 'desc')
->limit($limit)
->get();
}
예를 들어, 하위 쿼리, 4개의 관계, 하나의 orderBy 및 심지어 "limit"가 포함된 복잡한 쿼리가 충분히 있습니다.
예를 들어 작동하지 않는 더미 쿼리입니다.
캐시로 어떻게 덮을 수 있는지 봅시다.
public function getProductsBlock(int $limit = 5)
{
$cacheKey = "products_block_" . "_" . $limit;
$ttl = 600; // 10 minutes.
return Cache::remember($cacheKey, $ttl, function() use ($limit) {
return Products::query()
->indexed()
->whereHas("images", function(Builder $query) {
$query->active();
})
->with("images")
->with("comments")
->with("ratings")
->with("attributes")
->orderBy('id', 'desc')
->limit($limit)
->get();
});
}
이제 데이터를 캐시에 저장하고 번개처럼 빠르게 검색할 수 있으며 데이터베이스를 방해하지 않습니다.
하지만 데이터가 변경된 경우에는 어떻게 됩니까?
getProductsBlock()
를 호출하면 캐시에서 데이터를 반환하며 현재 최신 상태가 아닙니다.이를 처리하는 방법과 캐시 기능에 대한 올바른 TTL(Time To Live)을 선택하는 방법은 이 비디오에서 설명했습니다.
제 채널을 좋아하고 구독해 주시면 새로운 동영상을 만드는 데 동기를 부여해 드립니다. 궁금하신 점은 유튜브 댓글로 물어봐주세요.
Reference
이 문제에 관하여(Laravel 캐시: 애플리케이션 성능 향상), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vpominchuk/laravel-cache-improve-performance-of-your-application-5bl2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)