현재 쓰고 있는 FireFox 3.6.13 버전에서 발생한 파일 caching 문제.

결론부터 말하자면, 어제저녁에 건드렸던 conv-xml.js  파일이 FireFox 내에서 Disk Caching 되어 있어서 ajax 요청을 보냈을 때 새로 갱신된 conv-xml.js 을 읽어들이지 않고, 브라우저가 자체적으로 caching된 파일을 돌려보내는 상황.

즉, 동적 로딩에서 발생하는 문제.

티스토리 스킨에 들어갈 자바스크립트 파일을 이클립스에서 만지고 있는데, 톰캣을 내렸다 켜보고 심지어 작업 디렉토리를 지우고 갱신해봐도 소용이 없다.

작업 디렉토리를 갱신해도 소용없음.


아무리 봐도 서버가 아니라 브라우저쪽에서 문제가 생긴게 분명해보임.

구글링을 해보니 Firefox 브라우저에서 무효화된 캐쉬 파일을 틀어쥐고 놓아줄 생각을 하지 않고 있음. Firefox 주소창에 about:cache 에서 caching된 파일들을 볼 수 있다고 나온다.

현재 시간 2월 8일 19:30분... -_-;;


지금 만든 스크립트 파일의 내용은 아래와 같으나...

현재 파일의 내용


disk cache에는 어제 만들어뒀던 간단한 테스트 출력 내용이 담겨진 conv-xml.js가 캐쉬되어 있다.(거 참.. -_-;)

어제 작성한 내용...


문제를 파악 후, 다시 구글링을 해서 블로그를 하나 찾게됨.

Disable JavaScript Cacing in Firefox

firefox 주소창에 about:config 를 입력 후 network.http.use-cache 프로퍼티를 찾아서 false 로 하면 된다는 내용인데,  caching이 자바스크립트만 적용되는지 전체 파일에 대해서 적용되는지 알 수 없는 상황.

network.http.use-cache 를 false 로 바꾸라는데...


network.http.use-cache 를 검색해보니 아래와 같은 자세한 설명이 나온다.

Network.http.use-cache

http 요청을 보내서 받은 파일을 디스크나 메모리에 캐쉬할건지 말건지를 나타낸다고 하는데, 이 좋은 기술을 통째로 사용하지 않는건 좀 무리인 듯 싶어서, 일단 js 파일 뒤에 무의미한 parameter 를 같이 날려서 보내면 해결이 된다.

이를테면 "..../conv-xml.java" 를 로드할 때

".../conv-xml.java?dummy=Math.random()"


으로 요청을 보내면 최신 내용을 받아온다.

그대신에 디스크 캐쉬에는 매번 동일한 conv-xml.js 가 다른 이름으로 캐쉬된다.

다시 구글링을 해보니 누군가가 나와 똑같은 문제를 겪고 질문을 올렸놓았다.

How to turn off firefox cache?

답변 내용에는

1. F5 대신에 Ctrl+F5 를 해봐라.

Firfox Keyboard Shortcut을 참고해보니 캐쉬를 override 한다고 나온다..

그러나 이 방법은 지금처럼 ajax 방식으로 자원을 동적으로 가져올때는 무용지물이다.

Ctrl+f5를 눌러봤자 html 파일과 그 안에 포함된 각종 자원들(js, css, 이미지 등등)에만 적용되는 듯 하다. 마찬가지로 html 파일에

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

를 삽입해도 지금과 같은 동적 로딩에서는 소용이 없다.

2. request를 보낼 때 Cache-Control:no-cache를 보내라.

시도는 안해봤으나 될 것 같은 예감... request 보낼 때 헤더 부분에 설정해주면 먹히려나...

3. firefox add-on 중에 CacheViewer 가 있으니까 설치해서 특정 파일만 지울 수 있다.

답변자가 캐싱된 내용도 지울 수 있다고 했는데, add-on 페이지를 열어서 설치해보니 파일명으로 검색하면 디스크 캐싱된 파일을 필터링해서 보여준다.

좀 짱인듯....


삭제 후 dummy 파라미터를 안보내도 잘 작동한다.
그러나 스크립트 파일에 변경이 생기면 매번 지워줘야 한다.
동적로딩의 경우에는 실용성이 없어보임...(걍 재미삼아 함 설치해볼만함)

4. Web Developer add-on 을 쓴다면 툴바에서 "차단>캐시사용안함"을 눌러주면 된다.

이것도 제법 유용해보인다.
캐시 기능을 끄거나 켤 수 있으니 개발할때만 꺼놓으면 될 듯하다...

Posted by yeori
,