2009-05-12 4 views
1

나는 몇몇 png 도표를 생성하고 mysql 데이타베이스를 사용하여 파일을 능가한다. 내 웹 응용 프로그램에서 이미지로 차트를 표시하지만, IE 사용자가 이전에로드 된 데이터 (차트 및 엑셀 파일)를 계속 표시하기 때문에 IE 사용자가 파일의 마지막 버전에 액세스하지 못합니다.IE 기록

그 일을 막기 위해? 클라이언트 측에서 수행 할 수있는 작업은 무엇입니까?

내 웹 응용 프로그램은 PHP로 작성되었습니다. Internet Explorer에서 새 파일을로드하도록하려면 어떤 접근 방식을 사용해야합니까?

답변

5

표시 할 이미지에 고유 한 쿼리 문자열을 추가하는 것입니다. 이미지 처리기에서 쿼리 문자열에 실제로 전달되는 데이터는 무시할 수 있지만 IE는 다른 쿼리 문자열을 가진 URL을 고유 한 것으로 취급하므로 캐시 된 버전을 사용하지 않고 각 쿼리 문자열을 새로로드해야합니다.

<img src="mychart.png> 

에 : 변경 예를 들어

,

<img src="mychart.png?timestamp=0512200911090000"> 

당신이 IE 캐시를 방지하기 위해 얻을 것이다.

+1

당신도 필요가 없습니다 ' timestamp = '비트, 그냥'mychart.png? 0512200911090000 '이 작동합니다. – swilliams

+1

물론 사실이지만 개념은 정적이 아닌 쿼리 문자열을 고유하게 만드는 방법을 보여주기 때문에 쌍으로 설명하는 것이 더 쉽습니다. – JoshJordan

2
<HTML><HEAD> 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1"> 
</HEAD><BODY> 
</BODY> 
</HTML> 
2

HTML 메타가 작동하지만 PHP 헤더를 사용하는 것이 효율적이고 정확합니다 (look here). 이 기사는 html 파일도 캐싱 할 수 있는지도 다루고 있습니다.

캐싱 PHP에서 다음 중 한 가지 방법으로 수행 (사용 헤더 이미지의 콘텐츠를 스트리밍 전) 할 수 있습니다

<?php 
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
    header('Pragma: no-cache'); 
?> 

또는

<?php 
    header('Expires: Mon, 26 Jul 1997 05: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'); 
?>