본문 바로가기
Struts

Struts2 + Freemarker 성능 튜닝

by 수앙 2011. 9. 11.
freemarker.properties
프리마커에서 ftl 파일 리로딩이 기본적으로 0.5초로 설정되어 있음.
ftl 파일을 직접적으로 수정할 일이 있을 경우 적당한 값을 지정하고 없을 경우엔 큰 값을 두어 성능 향상.
 - 기본 : template_update_delay=500 (명시 안했을 때)
 - 개발 : template_update_delay=0
 - 서비스 : template_update_delay=60000 (ftl 수정한 파일이 바로 적용될 필요가 없으면 큰 값으로)

struts.properties
struts.freemarker.templatesCache=true
WEB_APP/templates 생성하면 이 폴더에 build 된 ftl 파일들이 복사되어짐. 수정된 날짜를 비교하여 사용하는 걸로 보임. 자세한 건 잘 모르겠음;;
struts.devMode = true
아래의 2가지 설정 값이 자동으로 true가 된다. 그래서 struts.xml 설정을 바꾸면 서버 재기동 할 필요가 없다.
Overriding property struts.i18n.reload - old value: false new value: true
Overriding property struts.configuration.xml.reload - old value: false new value: true

기타
struts-default.xml 에 있는 defaultStack 인터셉터를 다 써야될 필요성이 없으면, 다른 인터셉터를 사용.
예를 들면 basicStack 이런 스택을 사용하여 필요한 인터셉터 추가.
기본 인터셉터는 struts-default.xml 파일에 <default-interceptor-ref name="defaultStack"/> 로 정의되어 있음.
이것을 재정의 하여 기본 인터셉터를 바꿈.
예)
<interceptors>
<interceptor-stack name="myStack">
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="basicStack"/>
</interceptor-stack>
</interceptors>

<default-interceptor-ref name="myStack"/>
i18n 인터셉터가 요청올 때마다 세션을 생성하므로 사용안하면 제거.
i18n Interceptor 참조: http://struts.apache.org/2.2.3.1/docs/i18n-interceptor.html (locale 관련 내용)

sitemesh 를 쓸 경우
i18n 인터셉터가 요청올 때마다 세션을 생성하므로 사용안하면 제거.
freemarker 를 사용할 경우
struts2 tag 를 freemarker 소스로 수정.

끝.


댓글