2011-05-08 4 views
1

XMLHttpRequest를 만들고 브라우저가 응답을 캐시하면 HTTP 응답 헤더도 캐시됩니까? 즉, 다음에 같은 요청을하면 response.getResponseHeader에서 같은 값을 다시 얻을 수 있습니까?XMLHttpRequests가 응답 헤더를 캐시합니까?

이 브라우저에 종속적입니까?

+0

시도해 보셨습니까? –

답변

0

헤더는 캐시되지 않거나 재사용되지 않습니다. 요청이 전송되기 때문에 헤더가 수신되고 캐시에서이 요청이 유효한 경우에만 헤더를 결정할 수 있습니다. 새로운 헤더가 이미 다운로드되었으므로 이전 헤더를 다시 사용하지 않아도됩니다.

응답 본문 만 캐시됩니다.

매우 쉽게 테스트 할 수 있습니다. 정적 리소스 (img 또는 txt 파일 또는 기타)에 XHR 요청을하고 Date 헤더를 확인합니다.

브라우저 의존적이라고 생각하지 않습니다. HTTP 헤더를 캐시하고 재사용하는 브라우저는 매우 이상 할 것입니다.

편집
jQuery를이 정렬의 것입니다 귀하의 질문에 대답 (매우 성가신) 요청을 GET하는 (기본적으로 내 생각) 안티 캐싱 인수를 추가합니다 아무것도처럼 캐시되지 않습니다.

+0

그러나 모든 XHR이 서버에 실제 요청을합니까? 캐시 된 이미지 또는 스타일 시트에 링크 할 때 브라우저는 서버와의 대화조차없이 재사용하기도합니다. 이것은 XHR에서 결코 발생하지 않습니까? –

+0

특별히 요청하면 브라우저가 요청합니다. 이미지 및 스타일 시트를 사용하면 특별히 요청하지 않습니다. 절대적으로 100 % 확신하고 싶다면 jQuery처럼 캐시 없음 인수를 추가하면된다.'page.html? _ = 324832475934' – Rudie

1

적어도 주요 브라우저는 헤더를 캐시하려고하지 않습니다. 그러나 캐싱을 방지하려면 특수 헤더를 보내야 할 수 있습니다. 캐싱 행동의 빠른 테스트를 수행하려는 경우, 여기 페이지있다 :

http://www.mnot.net/javascript/xmlhttprequest/cache.html

는 그리고 당신이 실제로 무슨 일이 일어나고 있는지보고 싶다면 나는 당신이 Wireshark와 같은 패킷 스니퍼를 가서 볼 것을 권장합니다 너 자신을 위해서. 캐시 된 본문을 제공하더라도 적어도 브라우저가 XmlHttpRequest에 대한 HEAD 요청을 수행한다고 상상할 수 있지만 잘못 될 수 있습니다.

+0

틀리지 않다. 헤더는 캐시가 여전히 유효하다는 것을 알 필요가 있습니다. – Rudie

관련 문제