Firefox와 Safari가 iframe 콘텐츠를 캐싱하지 못하도록하려면 어떻게해야합니까?
다른 사이트의 페이지에 iframe이있는 간단한 웹 페이지가 있습니다. 외부 페이지와 내부 페이지에는 모두 캐시를 방지하기 위해 HTTP 응답 헤더가 있습니다. 브라우저에서 "뒤로"버튼을 클릭하면 외부 페이지가 제대로 작동하지만 브라우저는 항상 iframed 페이지의 캐시를 검색합니다. IE는 잘 작동하지만 Firefox와 Safari가 문제를 일으키고 있습니다.
내 웹 페이지는 다음과 같습니다.
<html>
<head><!-- stuff --></head>
<body>
<!-- stuff -->
<iframe src="webpage2.html?var=xxx" />
<!-- stuff -->
</body>
</html>
var
변수는 항상 변경합니다. iframe의 URL이 변경 되었음에도 불구하고 (따라서 브라우저가 해당 페이지에 대해 새 요청을해야 함) 브라우저는 캐시 된 콘텐츠를 가져옵니다.
HTTP 요청과 응답을 앞뒤로 조사한 결과, 외부 페이지에이 포함되어 있어도 <iframe src="webpage2.html?var=222" />
브라우저는 여전히 webpage2.html?var=111
.
지금까지 시도한 내용은 다음과 같습니다.
- 임의의 var 값으로 iframe URL 변경
- Expires, Cache-Control 및 Pragma 헤더를 외부 웹 페이지에 추가
- 내부 웹 페이지에 Expires, Cache-Control 및 Pragma 헤더 추가
동일 출처 정책에 의해 차단 되었기 때문에 JavaScript 트릭을 수행 할 수 없습니다.
아이디어가 부족합니다. 누구든지 브라우저가 iframed 콘텐츠를 캐싱하는 것을 중지하는 방법을 알고 있습니까?
최신 정보
Daniel이 다른 테스트를 수행 할 것을 제안한대로 Fiddler2를 설치했지만 안타깝게도 여전히 동일한 결과를 얻고 있습니다.
이것은 내가 수행 한 테스트입니다.
- 외부 페이지
Math.random()
는 JSP에서 사용하여 난수를 생성 합니다. - 외부 페이지는 웹 페이지에 임의의 숫자를 표시합니다.
- 외부 페이지는 iframe을 호출하여 임의의 숫자를 전달합니다.
- 내부 페이지는 임의의 숫자를 표시합니다.
이 테스트를 통해 업데이트중인 페이지와 캐시 된 페이지를 정확하게 확인할 수 있습니다.
시각적 테스트
빠른 테스트를 위해 페이지를로드하고 다른 페이지로 이동 한 다음 "뒤로"를 누릅니다. 결과는 다음과 같습니다.
원본 페이지 :
- 외부 페이지 : 0.21300034290246206
- 내부 페이지 : 0.21300034290246206
페이지를 떠난 후 다시 누르십시오.
- 외부 페이지 : 0.4470929019483644
- 내부 페이지 : 0.21300034290246206
이는 외부 페이지가 URL에서 다른 GET 매개 변수를 사용하여 호출하더라도 내부 페이지가 캐시되고 있음을 보여줍니다. 어떤 이유로 브라우저는 iframe이 새 URL을 요청한다는 사실을 무시합니다. 단순히 이전 것을로드합니다.
피들러 테스트
물론 Fiddler도 똑같은 사실을 확인합니다.
(페이지를로드합니다.)
외부 페이지가 호출됩니다. HTML :
0.21300034290246206
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206" />
http : //ipv4.fiddler : 1416 / page1.aspx? var = 0.21300034290246206 이 호출됩니다.
(나는 페이지를 벗어나서 뒤로 쳤다.)
외부 페이지가 호출됩니다. HTML :
0.4470929019483644
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.4470929019483644" />
http : //ipv4.fiddler : 1416 / page1.aspx? var = 0.21300034290246206 이 호출됩니다.
이 테스트에서 웹 브라우저가 페이지를 캐싱하지 않는 것처럼 보이지만 iframe의 URL을 캐싱 한 다음 해당 캐싱 된 URL에 대해 새 요청을 만드는 것입니다. 그러나이 문제를 해결하는 방법에 대해 여전히 난처합니다.
웹 브라우저가 iframe URL을 캐싱하지 못하도록하는 방법에 대한 아이디어가 있습니까?