정적 파일에 한해서 캐시 무효화를 하므로 WebMvcConfigurer
객체의 addResourceHandlers
메서드를 이용한다. addResourceHandlers
는 정적 파일에 관한 응답 설정을 관리한다.
@Configuration
public class CacheBustingWebConfig implements WebMvcConfigurer {
public static final String PREFIX_STATIC_RESOURCES = "/resources/";
private static final CacheControl RESOURCE_CACHE_CONTROL = CacheControl.maxAge(Duration.ofDays(365)).cachePublic();
private final ResourceVersion version;
@Autowired
public CacheBustingWebConfig(ResourceVersion version) {
this.version = version;
}
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler(PREFIX_STATIC_RESOURCES + version.getVersion() + "/**")
.addResourceLocations("classpath:/static/")
.setCacheControl(RESOURCE_CACHE_CONTROL)
.resourceChain(false)
.addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"));
}
}
정적 파일을 응답할 때 캐시 설정도 추가하였다.
https://www.baeldung.com/cachable-static-assets-with-spring-mvc