2009-08-19 3 views
3

자바 스크립트를 사용하여 페이지를 무효화하고 본질적으로 새 버전을 가져 오려면 클라이언트가 필요합니까?클라이언트 측에서 브라우저 캐시의 페이지를 어떻게 무효화 할 수 있습니까?

은 내가 헤더 모든 것을 할 수 있다고 생각 : Invalidating cached content, If-Modified Headers?

만약이되도록 브라우저 아웃 (새로운 URL을 통해) 새로운 요청을하여, 현재의 캐시 된 버전을 새로해야하는 방법은 없습니다 ... 동일한 원본 URL 요청을 사용하여 업데이트 된 콘텐츠를 볼 수 있습니까?

+0

* 현재 페이지 또는 현재 페이지에서 취한 조치로 결정되는 다른 페이지를 무효화합니까? 나는 이것에 대한 해답에 대해서도 흥미가있을 것이다. – Roboprog

+0

나는 위의 stackoverflow 링크를 참조하십시오 ... – farinspace

답변

5

당신은 자바 스크립트와 함께, 당신의 문제 또는 사용 방법 POST를 해결하는 대신 GET 또는 nocache random parameter trick 사용하는 것을 수행 할 수 없습니다 더 많은 정보를 원하는 경우

은 다음을 참조하십시오 Is it possible to cache POST methods in HTTP?

+0

그것이 downvoted 이유는 무엇입니까? 나는 내 대답에 잘못된 것을 못 본다. – Cleiton

+0

- 자바 스크립트로는 할 수 없다고 말하기 때문에 - GET 대신 POST를 사용하면 지나치게 안심할 수 있습니다. – Zed

+0

@Zed, 귀하의 의견에 감사드립니다. 하지만 적어도 내가 아는 것은 "페이지 캐시를 무효화하는 것"은 자바 스크립트 만 사용하는 것이고 POST 메소드를 사용하면 IE가 IE를 강제로 최신 버전으로 만들고 해당 RFC 2616 상태가 명시 적으로 섹션 13 (HTTP에서 캐싱)에서 POST 요청 캐시해서는 안됩니다. – Cleiton

7

당신이 원하는 경우 당신이 할 수있는 현재의 페이지를 다시로드 :

location.reload(true); 

것은 그렇지 않으면 "전통적인"방법은 마지막에 임의의 쿼리 문자열을 추가하는 것입니다

'...?rnd=' + Math.random(); 
+1

LOL, 내 것은 정확히 이것과 동일 하 고 투표 ... 자세히 NICE – Zoidberg

+0

너무 downvote있어 ... 누군가가 그냥 대량 - 모든 대답을 downvoted. – Greg

+0

어리석은 ... 우리의 대답은 좋은 대답이기 때문에 ... 신뢰할 수있는, 문제를 해결할 것입니다. – Zoidberg

3

페이지를 참조 할 때 끝 부분에 임의의 변수를 추가하십시오. 예 :

document.location.href = 'mypage.html?randomVar=454068934'; 

이렇게하면 캐시되지 않은 버전이 보장됩니다. 나는 자바 스크립트 생성 guids를 사용하는 것이 좋습니다.

1

URL에서 임의의 매개 변수를 전달합니다. 예를 들어 products.php를 가져와야한다면 products.php? rand = 23443545라고 부릅니다. 이렇게하면 캐시가 간섭하지 않습니다.

+0

오, 잘. 내가 쓰기 시작했을 때, 아무런 대답이 없었습니다. 느린 타이퍼 :-( –

+0

LOL, 나도 내가 약 10 초 너무 늦었다. .. – Zoidberg

관련 문제