728x90
HTML, ASP, JSP, PHP 등 각 언어별 No_Cache 설정 방법에 대해 알아보겠습니다.

저의 경우는 JSP에서 Cache 소멸하는 방법을 써야 할 일이 생겨서 알아보게 되었고 이렇게 적어두면 JSP 코딩할때 가끔씩 유용하게 쓰입니다. 

캐쉬된 페이지때문에 가끔 웹브라우저 재시동하거나, 웹서버를 재 시동하는 경우가 있으셨을텐데... 그럴 경우에 쓰시면 항상 최신의 페이지를 캐쉬없이 보여줍니다. 

그리고, 어떠한 데이터가 넘어가는 경우에만 '만료된 페이지입니다' 라는 메시지를 보여주게 됩니다. 


HTML 
<META http-equiv="Expires" content="-1"> 
<META http-equiv="Pragma" content="no-cache"> 
<META http-equiv="Cache-Control" content="No-Cache"> 

ASP   
<%   
Response.Expires = 0   
Response.AddHeader "Pragma","no-cache"   
Response.AddHeader "Cache-Control","no-cache,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"); 
%>   

PHP   
<?   
header("Pragma: no-cache");   
header("Cache-Control: no-cache,must-revalidate");   
?>


Spring Framwork 사용시 bean 설정

<mvc:interceptors>

<bean class="org.springframework.web.servlet.mvc.WebContentInterceptor">

<property name="cacheSeconds" value="0"/>

<property name="useExpiresHeader" value="true"/>

<property name="useCacheControlHeader" value="true"/>

<property name="useCacheControlNoStore" value="true"/>

</bean>

</mvc:interceptors>



Struts Framework 사용시에는 아래와 같은 설정을 꼭 해주셔야 
위의 내용이 적용이 됩니다.

processNoCache()는 struts-config.xml 설정파일의 <controller>설정에서 nocache attribute가 true로 설정되어 있을 경우 호출된다. 만약 true 라면 response 객체의 header 에 Pragma, Cache-Control, Expires 가 추가되게 된다. 많은 개발자들이 Cache 때문에 고생한적이 있을 것이다. 따라서 Cache 를 없애기 위하여 모든 페이지 앞부분에 다음을 추가한 경험이 있을 것으로 생각된다.
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setHeader("Expires", "1");

Struts Framework에서는 struts-config.xml 설정파일에 단지 true로 설정해주면 Cache가 적용되지 않는다.  

<controller nocache="true" />
라는 설정을 struts-config.xml에 추가해 주면 됩니다.  


Posted by 앗뜨거
,