CPU를 많이 사용하거나 완료하는 데 몇 초가 걸리는 검색 또는 처리 작업의 경우 빠르게 검색할 수 있도록 검색된 데이터를 일정 시간 캐시하는 것이 일반적이다.
캐시는 일종의 중간 저장소로, 이전에 계산한 결과나 검색한 데이터를 임시로 저장해 두는 메커니즘을 말한다. 캐시는 주로 데이터나 리소스에 빠르게 액세스할 수 있도록 하여 성능을 향상시키는 데 사용된다.
캐시된 데이터는 일반적으로 Memcached 또는 Redis와 같은 매우 빠른 데이터 저장소에 저장된다
라라벨은 다양한 캐시 백엔드를 위해 Memcached, Redis , DynamoDB 및 관계형 데이터베이스와 같은 캐싱 백엔드를 지원한다. 또한 파일 기반 캐시 드라이버를 사용할 수 있으며 array 및 "null" 캐시 드라이버같은 자동화된 테스트를 위한 편리한 캐시 백엔드를 제공
웹 브라우저 캐시
웹 브라우저는 이전에 방문한 웹 페이지의 일부를 로컬에 저장하여 다음에 같은 페이지를 방문할 때 서버에서 다시 내려받지 않고 로컬에서 바로 표시한다. 이로써 웹 페이지 로딩 속도가 향상되고 트래픽이 감소된다.
컴퓨터 메모리 캐시
프로세서나 메모리와 같은 하드웨어에서 사용되는 캐시로 최근에 사용한 데이터나 명령어를 빠르게 액세스하기 위해 메모리에 저장한다.
데이터베이스 캐시
데이터베이스 시스템에서는 자주 사용되는 데이터나 쿼리 결과를 캐시에 저장하여 동일한 쿼리가 여러 번 실행될 때 빠르게 결과를 반환할 수 있도록 한다.
애플리케이션 캐시
소프트웨어 애플리케이션에서도 자주 사용되는 자원을 캐시에 저장하여 반복적인 계산을 피하고 성능을 향상시킨다.
애플리케이션의 캐시 설정은 config/cache.php에서 설정하며, 이 파일에서 애플리케이션 전체에서 기본적으로 사용하려는 캐시 드라이버를 지정한다.
기본적으로 라라벨은 직렬화되고 캐시된 객체를 서버의 파일 시스템에 저장하는 file 캐시 드라이버를 사용하도록 설정되어 있다.
더 큰 애플리케이션의 경우 Memcached 또는 Redis와 같은 보다 강력한 드라이버를 사용하는 것이 좋다. 동일한 드라이버에 대해 여러 캐시 설정을 구성할 수도 있다.
캐시에서 아이템을 찾은 뒤에 해당 아이템을 삭제할 필요가 있는 경우에는 pull 메소드를 사용한다. get 메소드와 마찬가지로, 캐시에서 아이템이 존재하지 않는 경우에는 null 이 반환된다
$value = Cache::pull('key');
# 캐시에서 아이템을 삭제
Cache::forget('key');
# flush 메소드를 사용하면 전체 캐시를 삭제
Cache::flush();
# 0 또는 음수로 된 만료 시간(초)을 입력하여 항목을 제거
Cache::put('key', 'value', 0);
Cache::put('key', 'value', -5);