웹서버 no-cache 설정
HTML 파일에 설정 :
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> |
JSP 파일에 설정 :
<% response.setHeader("Cache-Control","no-store"); response.setHeader("Pragma","no-cache"); response.setDateHeader("Expires",0); if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); %> |
Spring MVC Controller methods 설정 :
@Controller public class TheController { @RequestMapping(value = "/test") public String handle1 (HttpServletResponse response) { response.setHeader(HttpHeaders.CACHE_CONTROL, "no-cache, no-store, max-age=0, must-revalidate"); return "myView"; } } |
Spring MVC WebContentInterceptor 설정 :
<mvc:interceptors> <beans:bean id="webContentInterceptor" class="org.springframework.web.servlet.mvc.WebContentInterceptor"> <beans:property name="cacheSeconds" value="0" /> <beans:property name="useExpiresHeader" value="true" /> <beans:property name="useCacheControlHeader" value="true" /> <beans:property name="useCacheControlNoStore" value="true" /> </beans:bean> </mvc:interceptors>
또는…
// interceptor 등록 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(webContentInterceptor()); } // webContentInterceptor bean 등록 @Bean public WebContentInterceptor webContentInterceptor() { WebContentInterceptor webContentInterceptor = new WebContentInterceptor(); webContentInterceptor.addCacheMapping(CacheControl.noStore().noCache().mustRevalidate(), "/api/**"); return webContentInterceptor; }
|