동일한 결과를 제공하는 API를 사용하는 경우 요청시마다 통신을 할 이유가 없다.
비용적, 성능적면에서도 불리함을 갖게 된다. 캐시는 Redis 만 알고 있었는데 이번에 공부를 하며 Spring에서도 Cache 기능을 제공하는걸 알게 되었다.
우선 의존성을 추가해야한다.
implementation "org.springframework.boot:spring-boot-starter-cache"
그리고 나서 캐시를 관리할 캐시 매니저 빈을 생성해야 한다.
여러가지가 사용한데 저는 CaffeineCacheManager 를 사용하였습니다.
빈 설정을 하고 나면 다음과 같이 @Cacheable annotation을 사용해 캐싱 기능을 사용할 수 있습니다.
@Cacheable(value = "blogApi", key = "{#query, #sort, #page, #size}")
public SearchResponseData do(String query, String sort, Integer page, Integer size) {
.......
}
각종 플랫폼의 검색 API를 이용하는 메소드이다. 그런데 거의 동일한 결과를 제공하므로 같은 요청에 대해서는 위와 같이 캐시처리를 하여 비용과 성능을 잡을 수 있다.