[스프링] 캐시와 브라우저 저장

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을 사용하여 캐시 처리 및 브라우저 저장을 구현하면 애플리케이션의 성능을 향상시키고 클라이언트 경험을 개선할 수 있습니다.

참고 자료