스프링 WebContentGenerator로 자바스크립트 캐싱하기2
어제의 문제들을 해결했습니다.
문제1 해결: 파일 경로 문제는 스프링 Resource를 이용해서 해결했습니다. 스프링이 제공하는 Resource 중에 ServletContextResource가 있는데, 웹 루트를 기준으로 리소스를 가져올 수 있도록 해주는 편리한 클래스입니다.
Resource jsFolderResource = new ServletContextResource(getServletContext(), getJsFolder());
이런식으로 사용하면 되는데 여기서 ServletContext 객체는 reqeust -> session -> servletRequest로 쭉쭉 타고가서 가져와도 되지만, AbstractController가 상속받은 WebContentGenerator가 상속받은 WebApplicationObjectSupport가 스프링의 ServletContextAware 인터페이스를 구현했기 때문에, 위와같이 getServletContext()만 호출하면 가져다 쓸 수 있습니다.
문제2 해결: 뷰에서 js를 요청할 때 사용하는 URL 중에서 프로토콜과 서버명을 빼고 리소스 부분만 보냈습니다.
<script language="JavaScript" src="http://localhost:8080/js.do?name=koma.js&name=jquery-1.3.2.js">
</script>
이상태에서
<script language="JavaScript" src="js.do?name=koma.js&name=jquery-1.3.2.js">
</script>
이렇게 말이죠. 잘 동작합니다~ 캬캬캬
아.. cacheSeconds 속성에 입력한 값은 밀리초가 아니라 정말 '초' 단위더군요. 자칫하면 예상보다 너무 오래 캐시를 유지하는 일이 발생할 수도 있습니다. 주의하세요~
자바스크립트 캐싱하기 끝!