2012-01-26 4 views
2

나는 내가 만든 정말 간단한 사이트가 있습니다. 브라우저에서 JS 캐싱을 테스트하려고하는데 작동하지 않는 것 같습니다. 파일 이름이 변경되지 않는 한 대부분의 주요 브라우저는 기본적으로 JS 파일을 캐시했다고 생각했습니다. IIS 7에서 로컬로 사이트를 실행하고 있습니다.IIS7 ASP.NET MVC 정적 JavaScript 파일 캐시?

제 테스트를 위해 본문로드시 문서 쓰기 작업을 수행하는 간단한 JS 파일이 있습니다. JS 파일을 변경 (문서 쓰기가 쓰는 텍스트 변경) 한 다음 파일을 저장하면 브라우저를 새로 고칠 때 업데이트 된 것으로 표시됩니다. 왜 이런거야? JS 파일 이름이 변경되지 않은 한 원본 출력을 볼 수 있습니까?

Here is the simple site 테스트를 위해 만들었습니다.

답변

7

브라우저를 새로 고치면 브라우저는 페이지를 표시하는 데 필요한 모든 리소스를 서버에 요청합니다. 브라우저에 필요한 리소스 중 캐시 된 버전이있는 경우 해당 리소스에 대한 요청에 If-Modified-Since 헤더를 보낼 수 있습니다. 서버가 리소스를 제공하는 것보다이 헤더를 수신하면 리소스의 수정 된 시간을 If-Modified-Since 헤더에 제출 된 시간과 비교합니다. 자원이 변경된 경우, 서 v는 200 상태의 자원을 평소대로 다시 보냄니다. 그러나 리소스가 변경되지 않은 경우 서버는 304 (Not Modified) 상태로 회신하며 브라우저는 캐시 된 버전을 사용합니다.

수정 된 날짜 이 변경되어 브라우저가 새 버전을 전송합니다.

브라우저에서 캐싱을 테스트하는 가장 좋은 방법은 아마도 fiddler을 사용하고 사이트를 탐색하는 동안 요청 및 응답을 모니터링하는 것입니다. 테스트에서 새로 고침 버튼을 사용하지 마십시오. 브라우저가 빈번히 모든 리소스 (즉, If-Modified-Since 헤더를 생략)의 최신 사본을 요청하게됩니다.

편집 : 위의 내용은 현재 상황이 지나치게 단순화되었을 수 있습니다. 분명히 웹 검색은 각 브라우저에서 브라우저 캐싱이 작동하는 방식에 대한 더 깊은 이해를 제공 할 수있는 심층적 인 기사를 제공합니다.

+0

간소화되었지만 매우 잘 설명되어 있습니다. –

+0

duh, 새로 고침 버튼을 눌렀습니다 :-) – Alex