사이트 튜닝과 개발자들의 개발 편의성을 위해  새로운 script  태그(사용자 지정 컨트롤)을 하나 만들었다.

시나리오대로 라면 expires 해더를 통해 스크립트가 브라우저 캐시가 되어야 하고 만료일 전까지는 Request를 보내지 않아야 한다.

fiddler 로 조사해 보니 해더에 분명히 expires 해더가 붙었는데도...이 놈이 요청을 보낸다.
브라우저의 캐시 폴더에 캐시가 저장되어있는데도 말이다....오 이런일이..왜 그런 것일까.

혹시 몰라 우선 304 리턴 부분을 만들어 두었다. 브라우저 캐시가 안된다면 304 라도 처리해야 체면이 선다.

Last-modified 해더와  Etag 도 설정해 봤는데 모두 같은 현상이다.
304 처리는 잘 되지만 만료일일 지정된 놈이 계속 요청을 보낸다. 미치겠다.

한가지 자료를 찾았다.
http://weblogs.asp.net/scottgu/archive/2006/04/11/Don_1920_t-run-production-ASP.NET-Applications-with-debug_3D001D20_true_1D20_-enabled.aspx

디버그 모드로 컴파일한 경우 axd  핸들러 내용이 캐시되지 않는다는 내용이 있다.
클라이언트의 웹사이트는 왠지 모르지만 디버그 모드로 운영중이라고 한다.(ㅡㅡ;)
나도 디버깅을 위해 디버깅상태로 테스트 햇으니 이게 유력한 용의자일까?
닷넷 개발자들의 편의를 위해 디버그 모드인 경우 수정된 내용이 바로 적용되도록 캐시를 무시하도록 처리되었다고 한다.
이제 debug=false 로 놓고 다시 테스트를 해본다.


삽질이였다.

테스트를 한다고 F5 키를 누르면서 한 것이 원인인듯 하다.
http://www.ibm.com/developerworks/kr/library/wa-aj-cache/index.html
이 자료를 보면 expires 가 설정된 경우라도 F5 를 누르면 IE는 요청을 보낸다.
그렇기 때문에 304가 계속 나온것이다.

F5 가 아닌 링크를 통해 페이지를 이동하는 경우 예상대로 요청을 보내지 않았다.
긴 삽질이였다.



신고

댓글을 달아 주세요

티스토리 툴바