Whiteship's Note


스프링 WebContentGenerator로 자바스크립트 캐싱하기

모하니?/Coding : 2009. 7. 7. 18:41


http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/servlet/support/WebContentGenerator.html

링크를 보면, WebContentGenerator가 해주는 일을 대략 알 수 있습니다. HTTP cache 헤더를 제어할 수 있는 옵션들을 제공해 줍니다.

여러가지 속성들에 따라 HTTP cache-control 헤더 내용이 달라지는데, 그 중 중요한 녀석으로 cacheSeconds가 있습니다. 이 녀석은 기본 값이 -1로 되어 있고, 그 내용인 즉슨 cache 관련 헤더를 전혀 사용하지 않겠다는 것입니다.

캐시를 유지할 기간만 설정해주면 캐시 관련 헤더들이 다시 설정 되는데, 이 떄 설정되는 녀석들 중 하나가 HTTP 1.1에 추가된 cache-control이라는 헤더입니다.

스펙에서는 다음과 같이 정의하고 있습니다.
The Cache-Control general-header field is used to specify directives that MUST be obeyed by all caching mechanisms along the request/response chain.
요청/응답 체인과 관련된 모든 캐싱 매커니즘이 반드시 따라야 하는 지시를 설정한다고 요약해도 될 듯 합니다.

자바스크립트가 들어있는 어떤 페이지를 요청하면, 해당 자바스크립트 파일을 브라우저가 매번 읽어오는데, 그걸 좀 더 효율적으로 개선하기 위해, 자바스크립트를 어떤 url을 통해 가져오도록 src="js.do?name=base.js" 이런식으로 설정하고, 컨트롤러에서는 요청한 자바스크립트를 찾아서 response에 write해 줍니다. 이 때 캐시를 사용하도록 하는거죠.

컨트롤러는 WebContentGenerator를 상속 받은 AbstractController를 상속받는 클래스를 하나 만들고, 내용은 name이라는 매개변수의 값에 해당하는 File을 읽어와서, HttpServletResponse에 쭉~ write() 해주고, 컨텐츠 타입을 자바스크립트로 response.setContentType("application/javascript"); 이렇게 설정해줍니다. 그리고 WebContentGenerator를 가 제공해주는 setCacheSeconds로 캐시를 유지할 시간 설정을 해 줍니다.

파폭과 live HTTP 헤더 플러긴으로 확인해본 결과, 초기 한 번 만 js를 읽어오고 그 뒤 요청 부터는 js를 읽어오지 않았습니다.

문제 1. 컨트럴러에서 자바스크립트 파일을 읽어오는 부분이 녹녹치 않더군요. @_@.. 그래서 자바스크립트가 담겨있는 폴더를 컨트롤러에 설정해줘야 합니다. 개발 환경은 사람 마다 다를테고 배포 환경도 다를텐데.. 이 값을 안 쓰는 방법(상대 경로로 웹 루트에서 부터 js 파일을 찾아가면 좋을 텐데, 제 이클립스에서 돌려보니까 이클립스 루트 폴더부터 경로를 탐색하더군요. @_@)

문제 2. 자바스크립트를 요청하는 URL이 역시 개발 환경과 배포 환경 마다 다를텐데 이건 또 어떻게 해결해야 할지.. 고민입니다.

        <script language="JavaScript" src="http://localhost:8080/js.do?name=koma.js">
        </script>

이런 URL이 되버리는데.. 개발할 때는 이렇게 써도 돌아갈테지만, 배포하면?... @_@

일단 이 두 문제가 맘에 많이 걸리네요.


top

  1. Favicon of https://helols.tistory.com BlogIcon is윤군 2009.07.08 10:24 신고 PERM. MOD/DEL REPLY

    2번은 봄싹 스타일 처럼 이렇게 해도 될 것 같은디;; 안되려나? ;;
    <script language="JavaScript" src="<c:url value="/js.do?name=koma.js"/>">
    </script>

    그리고 1번은.. 절대 경로도 괜찮을 것 같은데요~ ;;;
    웹서버랑... was 랑 다른 서버가 다른 장비에 포팅 되어 있는경우를 보면..
    상대경로로는 js 파일을 참조 할 수 없으니까요..
    그렇지 않은 경우는 상대경로가 좋긴 하겠지만요 ~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2009.07.08 11:14 신고 PERM MOD/DEL

    캬캬 2번은 그렇게 했어.
    1번도 해결했어. 영원히~

Write a comment.


[파이어폭스 플러그인]Live HTTP headers

Good Tools : 2009. 7. 7. 11:56


https://addons.mozilla.org/en-US/firefox/addon/3829

HTTP 헤더 정보를 보여주는 창을 띄울 수 있습니다. 도구 -> Live HTTP headers를 클릭하면 되죠.
그런 다음 파폭 아무 탭에서 URL을 날리면 Headers 탭에서 HTTP 헤더 정보를 보여줍니다.


전 이제 이것과 스프링의 AbstarctController와 WebContentGenerator를 보면서 HTTP 공부를 해야 하고, js 파일들을 캐싱해서 보내주는 컨트롤러를 만들어야 합니다. 오늘 안에 꼭!!! 파이팅!

이것도 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

top

Write a comment.


벌써 한 달이 넘었군요.

모하니?/Thinking : 2009. 7. 7. 09:33



깃털처럼 가벼운 새색시를 업고 찍었습니다.
결혼한지 한 달이 조금 넘은 상태라 아직도 좀 어리둥절 합니다.

부모님 집에서 살 때와는 많은 것들이 다른데 일단, 집안일을 충실히 하고 있습니다.
부모님 집에서는 설겆이도 잘 안 했었는데, 요즘은 밥하기, 설겆이하기, 청소기 돌리기, 걸레질하기, 강아지 목욕 시키기, 세탁기 돌리기, 세탁물 털어서 널기, 걷어서 게어놓기 정도는 하고 있습니다.
물론 와이프는 이 보다 더 많은 일들을 하기 때문에 전혀 불만이나 불평은 없습니다. 내가 예전에 얼마나 편하게 살았었던가... 하는 반성을 하게 되더군요.

또 하나 다른건 돈 문제인데, 가장으로써, 집에 벌어다 주는 돈이 적을 때 위축 됩니다. 아.. 내가 이래가지고 애들은 나아서 잘 키우겠나... 무슨 돈으로 키우나... 이런 고민이 생기더군요. 그 동안 결혼 준비하랴 신혼 여행 가랴 여기 저기 돈 쓸 곳이 많아서 월급을 제대로 가져다 준 적이 별로 없습니다.
하지만, 둘 다 쇼핑을 별로 안 좋아라하고 와이프가 알아서 잘 관리하고 있기 때문에 꾸준히 노력해서 실력을 쌓다보면 어떻게든 살아날 구멍이 있겠거니 긍정적으로 생각하고 있습니다.

이 두 가지는 가장 큰 변화 들 중에 앞으로 짊어져야 할 짐이었다면, 마지막 변화는 저에게 큰 힘이 되어주는 동반자를 얻었다는 겁니다. 저녁에 퇴근해서 옹알종알 담소도 나누고, 같이 베드민턴을 치며 땀을 빼고, 샤워 할 때 등도 밀어주고, 아침에는 닭백숙을 끓여주는 동반자.. 캬~~ 아내가 차려준 밥을 때 제일 행복하답니다. 크하하



top

  1. Favicon of http://toby.epril.com BlogIcon 2009.07.07 09:43 PERM. MOD/DEL REPLY

    아침부터 닭백숙? 넘 호강하는 거 아냐~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2009.07.07 10:59 신고 PERM MOD/DEL

    어제 밤에 먹고 남은거에요.
    둘이서 한 마리(5천원)로 두 끼를 떼울 수 있더라구요.

  2. Favicon of https://helols.tistory.com BlogIcon is윤군 2009.07.07 16:22 신고 PERM. MOD/DEL REPLY

    "샤워 할 때 등도 밀어주고"..... ㄷㄷㄷㄷㄷ;;;

    아 내가 결혼을 안해서 등간지러운 가봐욥!! ㅋ

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2009.07.07 18:42 신고 PERM MOD/DEL

    그런거에 너무 집착하지마.. 중요한 건 닭백숙이라고!

  3. 김재진 2009.07.08 13:09 PERM. MOD/DEL REPLY

    닭백숙을 아침부터!!..남들도 다 그만큼 해주진 않아요 T^T

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2009.07.08 14:42 신고 PERM MOD/DEL

    나도 뭐 맨날 닭백숙을 먹진 않아.

  4. Favicon of http://blog.lckymn.com BlogIcon Kevin 2009.07.14 01:20 PERM. MOD/DEL REPLY

    와... 제대로 염장이네요. :)
    두분 행복한 모습이 보기 좋습니다.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2009.07.14 16:17 신고 PERM MOD/DEL

    ㅎㅎㅎ감사합니다.
    사진을 간만에 다시 보니 즐겁군요.

  5. Favicon of http://blog.naver.com/j81811 BlogIcon aStRe 2009.09.03 23:02 PERM. MOD/DEL REPLY

    아래서 두번째줄 마지막에 오타지요?

    굶긴후 밥을 줘서 배불러서 행복하지요? keke

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2009.07.08 11:13 신고 PERM MOD/DEL

    굶기기는~ 잘 챙겨주면서 ㅋㅋ

  6. Favicon of http://blog.naver.com/j81811 BlogIcon aStRe 2009.09.03 23:03 PERM. MOD/DEL REPLY

    별로 잘 챙기는거 없는데..남들도 다 이만큼은 해줘요!!

    Favicon of http://whiteship.me BlogIcon 기선 2009.07.08 12:56 PERM MOD/DEL

    ㅇㅇ그렇구나!

Write a comment.