HTML

chrome - iframe - cache

jeeyong 2011. 2. 23. 11:37
browser : chrome
issue  : Jquery 라이브러리 중 ajax를 사용하여 호출한 페이지에서 iframe을 호출시 iframe페이지에서 넘겨받은 parameter값이 캐시가 되는 듯한 현상이 발생.

해당 URL형식은 http://www.mgoon.com/player/mymgoon_a.jsp?VID=${ param.vid }&W=380&H=320

현재까지 테스트를 진행해보고 피드백을 받아본 바론 chrome에서만 이런 현상이 발생했고 예전 view 페이지에서 iframe 캐시와 어떤관계가 있는 것 일수도 있다는 생각이 들었다.

처음 해결을 하기위해서 취한 행동은 jsp 에서  no-cache 관련 소스를 삽입 해보았다

<%
response.setHeader("cache-control","no-cache");
response.setHeader("expires","0");
response.setHeader("pragma","no-cache");
%>
실패.

두번째 방법은 html <head>태그안에 no-cache관련 소스를 삽입해보았다.
<meta http-equiv="Cache-Control" content="no-cache"/>
<meta http-equiv="Expires" content="-1"/>
<meta http-equiv="Pragma" content="no-cache"/>
실패.

세번째 방법은 iframe src주소에 dummy값을 추가해보는것이다.
<iframe width="380" height="320" src="http://www.mgoon.com/player/mymgoon_a.jsp?VID=${ param.vid }&W=380&H=320&ramy=<%=System.currentTimeMillis() %>" scrolling="no" frameborder="0"></iframe>
실패.

기본적인 두방법 실패로 우선 좀더 캐시에 대한 정보를 조사하기위해 <title>테그에 시간 정보 삽입*(<%System.currentTimeMillis() %>)
 테스트해 본 결과 
Mgoon1298423739460

Mgoon1298423812344

Mgoon1298423862127

Client단에서의 캐시가 아닌것으로 보인다.

서버단에서 parameter를 캐시해버리는 것인가? URL주소를 보면 
<iframe width="380" height="320" src="http://www.mgoon.com/player/mymgoon_a.jsp?VID=${ param.vid }&W=380&H=320&ramy=<%=System.currentTimeMillis() %>" scrolling="no" frameborder="0"></iframe>

저 VID 파라메터가 문제가 되는데.. 마지막으로 내가 취한 방법은 

<iframe width="380" height="320" src="http://www.mgoon.com/player/mymgoon_a.jsp?vid=${ param.vid }&W=380&H=320&ramy=<%=System.currentTimeMillis() %>" scrolling="no" frameborder="0"></iframe>

만약 대분자로된 파라메터에 대한 값이 서버에서 제대로 동작하지 않는다면 이건 정말 중요한 결과이다. 문제는 다른 브라우저에선 정상작동하는 것으로 봐선 서버만의 문제는 아니지만 크롬과 서버(resin) 과 연동된 문제라면 기록에 남겨둘 필요가있다.

==============================================================================================
임시로 해결한 방법..
iframe을 빈페이지로 띄우고
<iframe id="iframe_player" width="380" height="320" src="about:blank" scrolling="no" frameborder="0"></iframe>

자바스크립트로 src 속성을 수정하는 방법으로 처리.
아직까진 문제가 없는것으로 보임.