개발/Java & Kotlin

[Spring] 정적파일 캐시에 담기

devhooney 2024. 4. 12. 17:11
728x90

 

 

 

스프링부트로 정적파일(JS, CSS 등)들을 캐시에 담아서 자원낭비를 막아보자.

 

 

 

1. WebConfig 생성 후 WeMvcConfigurer 인터페이스를 상속

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

    }

 

 

2. registry에 리소스핸들러, 리소스로케이션, 캐시컨트롤 등을 추가

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        VersionResourceResolver versionResourceResolver = new VersionResourceResolver();
        versionResourceResolver.addContentVersionStrategy("/**"); // 버전

        registry
                .addResourceHandler("/**")
                .addResourceLocations("classpath:/static/", "classpath:/resources/static/")
                .setCacheControl(CacheControl.maxAge(CACHE_DAYS, TimeUnit.DAYS)) // 예시: 30일 동안 캐시 유지
                .resourceChain(true)
                .addResolver(new EncodedResourceResolver())
                .addResolver(versionResourceResolver);
    }

 

 

VersionResourceResolver는 정적파일에 변화가 있을 때 그걸 감지해서 버전을 바꿔준다.

그래서 해당 파일만 클라이언트에서 새로 다운받을 수 있게 해준다.

 

 

 

- BEFORE

 

- AFTER

 

 

 

 

 

- from chatGPT

728x90