2009-03-26 7 views
2

onload 이벤트에서 이미지 파일을 다운로드해야하는 페이지가 있지만 모든 페이지 호출에 대해! 이제 첫 번째 호출에서 이미지를 다운로드하지만 두 번째 호출에서는 임시에서 가져오고 원하는 것은 아닙니다. 각 하중에 대해 몇 가지 계산을해야합니다. 그래서 나는 임시 또는 클라이언트가 서버에서 다시 다운로드하도록 강요하는 다른로드에서 다운로드 한 파일을 삭제하려고합니다.자바 스크립트의 임시 인터넷 파일에서 파일을 삭제할 수 있습니까?

자바 스크립트 솔루션이 우수합니다. 감사.

답변

8

아니, 당신은 자바 스크립트를 사용하여 캐시에 전혀 아무것도 할 수 있지만 캐시에없는 있도록 이미지의 URL을 변경할 수 있습니다.

그냥 이미지의 URL에 쿼리 문자열을 추가하고 고유 때마다 확인하기 위해 현재 시간을 사용

<script type="text/javascript"> 
document.write('<img src="images/theImage.gif?t=' + new Date().getTime() + '" alt="" />'); 
</script> 
1

일부 javascript "hack"을 사용하지 않고 Cache-Control : no-cache에 다운로드 할 이미지의 HTTP 헤더를 설정합니다.

+0

좋은 생각하지만, 다른 솔루션은 내 문제에 대한 좋습니다. 이 문제를 해결하기 위해 전체 페이지를 다시 캐싱하지 않는 것이 좋습니다. 방법 고마워! –

+0

IMHO 이미지 파일 만 전체 페이지의 헤더를 설정할 필요가 없습니다! 이미지 다운로드는 별도의 HTTP 요청에 의해 수행됩니다. 다른 한편으로는, 어쨌든 자바 스크립트를 사용하여 다운로드하면, 그 해킹을 사용하는 것이 나에게 적절할 것 같다. – chiccodoro

+0

@chiccodoro, 그건 내가 '이미지의 HTTP 헤더를 설정 하겠어 ...'라고 말한 것입니다. :) – karim79

2

당신이 자바 스크립트 솔루션을 찾고 있다고 생각합니다. 그러나 이것을 해결하는 좋은 방법은 no-cache와 expiry 값을 지정하는 HTTP 응답 헤더를 사용하는 것입니다. .htaccess로 웹 서버 설정을 제어 할 수 없다면, 컨텐트를 제공하기 전에이 헤더를 설정하는 간단한 PHP 스크립트를 생성 할 수 있습니다. PHP에서 :

header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
1

당신은 확실히 자바 스크립트와 임시 파일을 삭제할 수 없습니다. 캐싱을 피하려면 이미지를 보낼 때 no-cache 헤더를 사용하십시오. 이렇게하면 이미지가 요청 될 때마다 다운로드됩니다.

헤더 목록 here. 당신은 사용해야합니다

:

캐시 제어 : 노 캐시

This는 마이크로 소프트 고유의 것입니다. 이런 일에

2

수정 URL 문자열 :

originalUrl += "?" + new Date().getTime(); 
관련 문제