[스프링] 캐시와 브라우저 저장
Spring은 자바 애플리케이션을 빌드하고 관리하기 위한 강력한 프레임워크입니다. 이 프레임워크를 사용하면 캐싱과 브라우저 저장 같은 성능 최적화 기능을 구현할 수 있습니다.
캐시 처리
Spring에서 캐시 처리를 위해 @Cacheable
, @CachePut
, @CacheEvict
와 같은 애노테이션을 제공합니다. 이를 사용하면 메소드 호출 결과를 캐시에 저장하거나 업데이트하고, 캐시에서 삭제할 수 있습니다.
예시
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.CacheEvict;
@Cacheable("products")
public Product getProductById(Long id) {
// 캐시에 해당 상품이 존재하면 해당 값을 반환, 없으면 메소드 실행 후 캐시 저장
}
@CachePut(value = "products", key = "#product.id")
public Product updateProduct(Product product) {
// 상품을 업데이트하고 캐시에 새로운 값으로 저장
}
@CacheEvict(value = "products", key = "#id")
public void deleteProduct(Long id) {
// 캐시에서 해당 상품 삭제
}
브라우저 저장
브라우저 저장은 클라이언트 측에서 요청된 리소스를 저장하여 중복 로딩을 방지하고 성능을 향상시킵니다. Spring에서는 캐시 관련 헤더를 설정하여 브라우저 저장을 구현할 수 있습니다.
예시
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
@GetMapping("/images/logo.png")
public ResponseEntity<byte[]> getImage() {
byte[] imageContent = // 이미지 데이터 로드
HttpHeaders headers = new HttpHeaders();
headers.setCacheControl("max-age=31536000");
return ResponseEntity.ok()
.headers(headers)
.body(imageContent);
}
위의 예시에서는 Cache-Control
헤더를 사용하여 이미지에 대한 브라우저 저장을 설정하고 있습니다.
Spring을 사용하여 캐시 처리 및 브라우저 저장을 구현하면 애플리케이션의 성능을 향상시키고 클라이언트 경험을 개선할 수 있습니다.
참고 자료
- Spring Framework 공식 문서
- Baeldung. “Spring Caching Annotations”. https://www.baeldung.com/spring-cache-tutorial
- Baeldung. “Caching in Spring with @Cacheable Annotation”. https://www.baeldung.com/spring-cacheable
- “How to Implement Browser Caching with Spring Boot”. https://www.baeldung.com/spring-mvc-browser-cache