2010-04-23 6 views
4

브라우저가 이미지 서버 또는 브라우저 캐시로 이동하는지 여부를 자바 스크립트로 제어 할 수 있습니까? 그렇지 않으면 캐시 된 이미지를 사용할 때 브라우저에서 서버 호출을하도록 강제 할 수 있습니까? 내 이미지 URL에 단순히 쿼리 문자열을 추가 할 수는 있지만 브라우저가 새로운 이미지로 인식하기 때문에 제대로 이해하면 작동합니다. 이전 이미지를 캐시에서 바꾸기를 원합니다.이미지가 캐시되지 않도록 클라이언트 쪽에서 사용할 수 있습니까?

답변

0

표준 img 태그로 이와 같은 작업을 수행 할 수 없습니다. 이미지에 대한 XMLHttpRequest를 만들고 if-modified-since 헤더를 설정할 수 있습니다. 이 캐시에 이전 이미지를 교체해야합니다 : 당신은 너무 좋아 "노 캐시"로 설정하지 캐시 제어를위한 페이지에 메타 태그를 사용할 수 있습니다

var url = "http://www.mysite.com/images/myimage.png"; 
var xhr = new XMLHttpRequest(); // or x-browser compat function 
xhr.open("GET", url, true); 
xhr.setRequestHeader("If-modified-since", "Thu Jan 1 00:00:00 UTC 1970"); 
xhr.onreadystatechange = function() 
{ 
    if (xhr.readyState == 4 && xhr.status == 200) 
     document.getElementById("myImg").src = url; 
} 
xhr.send(); 
+0

감사합니다. Andy E 님의 머리. document.getElementById ("myImg"). src = url – morgancodes

+0

@morgancodes : 이미지'src'를 url로 설정하면 브라우저의 기본 캐싱 메소드를 사용하고 현재 캐싱 된 이미지를 검색합니다. 요청을 할 때 요청 헤더 또는 기타 HTTP 관련 옵션을 설정할 수있는 방법이 없습니다. 내 대답에있는 방법은 브라우저가 이미지의 새로운 사본을 다운로드하여 캐시에 보관하도록 한 다음 이미지 요소를 새로 캐시 된 버전으로 전환합니다. –

+0

차가움. 감사. 시도해 볼게. – morgancodes

1

:

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

<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> 
또한 이론적으로 최신 버전을 확인하기 위해 브라우저의 원인이됩니다 과거의 시점에서 "만료"로 페이지를 설정할 수 있습니다

:

<META HTTP-EQUIV="EXPIRES" value="some date in the past" /> 

"과거의 일부 날짜"는 GMT가 RFC 1123 format이어야합니다. 이 도움이 See Here

희망 :

주, 당신은 단지 HTTP 헤더 자체에이를 보낼 수 있습니다.

+0

또한, 나는 CACHE라고 부르는 프로그래밍 테마의 스카 - 코어 밴드를 시작할 것입니다 ... – MisterMister

관련 문제