2014-04-08 4 views
0

나는 iframe 캐싱에 관한 여러 가지 질문을 이미 살펴 보았지만 내가 찾고있는 답이 없다.iframe의 상위 페이지 캐시를 삭제하는 방법은 무엇입니까?

우리는 다음과 같이 보입니다 iframe이 소스 코드를 사용하여 웹 응용 프로그램에 업로드 된 콘텐츠의 삽입을 허용 :

이 코드는 블로그와 같은 타사 웹 페이지, 뉴스 기사 등이 어디서나 내장 할 수
<iframe src="http://emdevcc5.mediapartner.com/embed.aspx?e=UkvpYFBUMZc=" style="height: 400px; width: 400px;"  marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" id="UkvpYFBUMZc="></iframe> 

이 질문에서 묘사 된 것처럼 내가 직면하고있는 이상한 문제입니다. (이 질문에 설명 된 문제는 순간에 정말 중요하지 않습니다) :

YUI dialog/panel not rendering correctly in IE iframe

그 문제가 해결 될 때마다 IE의 개발 도구에서 I 명확한 브라우저 캐시. 내가 iframe 페이지의 코드에서 트리거 할 수 있다고 생각하지 않는 상위 페이지의 캐시를 지우는 작업이 있다고 생각합니다.

그래서 부모 페이지의 캐시를 비우는 작업을 수행하려고합니다. 이 embed 코드는 액세스 할 때마다 생성되지 않기 때문에 한번 생성 된 후 여러 번 액세스됩니다. src 속성의 끝 부분에 임의의 타임 스탬프를 추가 할 수는 없습니다. 적어도 나는 embed 코드에서 javascript를 사용하지 않고 그것을 할 수 있다고 생각하지 않는다.

iframe 콘텐츠를 제어 할 수 있고 페이지 머리에 no-cache 태그를 추가했습니다. 이러한 태그 때문에 디버깅시 실제로 요청이 서버에서 처리되고 있음을 알 수 있습니다. 그래도 문제는 IE 개발자 도구에서 상위 페이지의 캐시를 비우는 데에만 사용됩니다. 따라서 상위 페이지의 캐시를 어떻게 지울 수 있는지 잘 모르겠습니다.

어떤 아이디어로이 문제를 해결할 수 있습니까?

+1

아이디어 만 있습니다. iframe 콘텐츠로 제어하는 ​​경우 사용자를 임의의 문자열로 새 URL로 리디렉션 할 수 있으며 이는 항상 캐시가 아닌 서버에 대한 요청을 트리거합니다. – ysrb

+0

@ysrb - 충분히 명확하지 않은 것에 대해 죄송합니다. iframe 내용을 제어 할 수 있고 페이지 머리에 no-cache 태그를 추가했습니다. 이러한 태그 때문에 디버깅시 실제로 요청이 서버에서 처리되고 있음을 알 수 있습니다. 그래도 문제는 IE 개발자 도구에서 상위 페이지의 캐시를 비우는 데에만 사용됩니다. 따라서 ** 부모 페이지 **의 캐시 지우기를 어떻게 트리거 할 수 있는지 잘 모르겠습니다. – Mandar

답변

2

귀하는 웹 페이지를 제어 할 수 있습니다. 따라서 적절한 헤더를 설정하여 캐싱을 방지하십시오.

다음은 PHP의 샘플입니다.

<? 
header('Expires: Sun, 01 Jan 2014 00:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', FALSE); 
header('Pragma: no-cache'); 
?> 

페이지의 맨 위에 붙여 넣으십시오.

+0

충분히 명확하지 않은 것에 대해 유감스럽게 생각합니다. iframe 콘텐츠를 제어 할 수 있으며 페이지 머리에 이미 해당 태그가 있습니다. 이러한 태그 때문에 디버깅시 실제로 요청이 서버에서 처리되고 있음을 알 수 있습니다. 그래도 문제는 IE 개발자 도구에서 상위 페이지의 캐시를 비우는 데에만 사용됩니다. 따라서 ** 부모 페이지 **의 캐시 지우기를 어떻게 트리거 할 수 있는지 잘 모르겠습니다. – Mandar

+0

부모 창이 강제로 캐시를 가질 수 없습니다. 즉, iframe으로 페이지를 포함하는 사람은 본질적으로 자신의 헤더를 제어 할 수 없게됩니다. – Neel

+0

해결하려는 문제는 무엇입니까? – Neel

2

콘텐츠를 관리하는 경우에 따라 다릅니다. 캐시 된 버전을 사용하지 않도록 브라우저에 알려주는 2 개의 태그가 있습니다 (이상적으로는 페이지 헤드에 있음). 내가 사용한다

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 

대부분의 사이트에서는 이것이 작동하지 않을 수도 있지만 어떤 브라우저에서도이 문제가 없었습니다.

+0

죄송 합니다만 충분히 명확하지 않습니다. iframe 콘텐츠를 제어 할 수 있으며 페이지 머리에 이미 해당 태그가 있습니다. 이러한 태그 때문에 디버깅시 실제로 요청이 서버에서 처리되고 있음을 알 수 있습니다. 그래도 문제는 IE 개발자 도구에서 상위 페이지의 캐시를 비우는 데에만 사용됩니다. 따라서 ** 부모 페이지 **의 캐시 지우기를 어떻게 트리거 할 수 있는지 잘 모르겠습니다. – Mandar

+0

@Mandar 상위 페이지에 대한 액세스 권한이 있습니까? 그렇지 않으면 ysrb가 준 응답 (잘 덧글)은 작동 할 것입니다. – bensonsearch

+0

아니요, 부모 페이지는 앱의 콘텐츠가 포함 된 외부 웹 페이지 일 수 있습니다. 그래서 나는 그것을 통제 할 수 없다. ysrb가 제공 한 제안을 시도해 보겠습니다. – Mandar

관련 문제