2012-07-07 3 views
2

C++ 코드를 서버에서 컴파일 한 다음 출력을 내보내는 웹 양식이 있습니다. 문제의 C++ 코드는 웹 페이지에서 볼 수있는 BMP 파일에 기록합니다. 이것은 AJAX를 통해 인터페이스됩니다. 내 주요 문제는 이미지를 변경하기 위해 프로그램을 다시 컴파일 할 때마다 페이지를 새로 고침하지 않으면 해당 이미지가 변경되지 않는다는 것입니다. 따라서 캐싱 문제라고 가정합니다. 다음 단계는 다음과 같습니다AJAX 이미지를 캐쉬하지 않으려 고합니다.

  1. 사람은 C++ 코드를 입력
  2. 사람 프레스
  3. C++ 코드는
  4. compile.php 디렉토리에서 프로그램을 표시 모든 이미지를 컴파일 compile.php을 보내 제출

사람이 프로그램의 이미지 색상을 변경하고 양식을 다시 제출하면 제출은 성공하지만 페이지가 새로 고쳐지지 않으면 이미지가 변경되지 않습니다. 출력 파일 이름을 변경하고 올바른 색상으로 새 이미지를 만들 때이를 확인했지만 동일한 파일 이름으로 프로그램을 다시 컴파일하면 페이지를 새로 고치지 않으면 특정 이미지가 변경되지 않습니다.

나는 PHP 파일의 맨 위에 no-cache 헤더를 넣으려고했다.

<?php 
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " 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

서버가 실제로 이러한 헤더를 보내고 있는지 확인 했습니까? –

답변

1

문제를 해결하려면 AJAX 요청을 할 때 자바 라이브러리에서 캐싱을 사용하지 않도록 설정해보세요. JQuery의 경우 cachefalse으로 설정하십시오.

또 다른 해결책은 요청할 때 캐시 - 박스터 매개 변수를 수동으로 추가하는 것입니다. 예를 들어, AJAX 요청을 compile.php으로 만드는 대신 compile.php?123456으로 요청하십시오. 여기서 123456은 현재 시간 소인입니다. 이렇게하면 브라우저가 캐시 된 사본을 사용하지 않아야합니다.

관련 문제