[Spring Boot] 이미지 캐싱, CDN 기능 설정
클라이언트에서 이미지 로딩시 매번 서버에 저장된 이미지를 조회하게 되면 성능이 저하가 생긴다.이를 해결하기위해 spring boot 자체에서 제공하는 이미지 캐싱 기능을 설정 해 보도록 하겠다.
[수행 환경]
Windows 10 IntelliJ java 11 gradle-7.6 |
[application.yml 설정] |
spring: image: path: file:///C:Image/ #<----- 마지막에 꼭 / 를 넣어준다. |
참고로 linux 환경인 경우 path를 file///home/service/image/ 식으로 넣어줍니다. |
[WebConfig 클래스 작성] |
import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.http.CacheControl; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.time.Duration; @Configuration public class WebConfig implements WebMvcConfigurer { private String connPath = "/imagePath/**"; //<------------ 서버를 기동하면 http://localhost/imagePath/test.jpg public static String resourcePath; @Value("${spring.image.path}") public void setPath(String resourcePath) {this.resourcePath = resourcePath;} @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { CacheControl cacheControl = CacheControl.noCache().mustRevalidate().cachePrivate().sMaxAge(Duration.ofDays(1)); registry.addResourceHandler(connPath) .addResourceLocations(resourcePath) .setCacheControl(cacheControl); } } |
[실행 후 확인] |
http://127.0.0.1/imagePath/test.jpg |
1. 크롬 브라우져를 켠다 2. F12를 누른다. 3. Network 메뉴를 누른다. 4. http://127.0.0.1/imagePath/test.jpg 호출한다. 그럼 응답으로 200이 나온다. 5. 다시한번 http://127.0.0.1/imagePath/test.jpg 호출 한다 캐싱이 제대로 됐다면 304가 나온다. |
반응형
'프로그램 > Spring Boot' 카테고리의 다른 글
[Spring Boot] JPA 설정 및 사용 방법 (0) | 2023.07.16 |
---|---|
[Spring Boot] Intellij를 이용한 Entity 자동 생성 (0) | 2023.07.15 |
[Spring Boot] swagger 설정 방법 (0) | 2023.07.09 |
[Spring Boot] QueryDsl 설정 방법 (0) | 2023.07.08 |
[Spring Boot] Feign Client 사용법 (0) | 2023.07.04 |