서론
이번 글에서는 템플릿 엔진 중 하나인 타임리프의 캐시에 대해 알아보려한다. 기본적으로 템플릿은 최초 사용될 때 한 번만 파싱되는 성격을 갖고있다.
파싱된 결과는 향 후 사용을 위해 캐시에 저장되는데, 이것은 프로덕션에서 애플리케이션을 사용할 때 좋은 기능이다. 매번 요청을 처리할 때마다 불필요하게 템플릿 파싱을 하지 않으므로 성능을 향상시킬 수 있기 때문이다.
이러한 캐싱이 개발할 때는 오히려 불편한 요소로 작용된다. 애플리케이션을 시작하고 디자인 수정 후 새로고침을 하더라도 수정 전의 페이지만 나오는 것을 확인할 수 있는데 이를 보완하기 위해 해당 캐싱의 속성을 설정할 수 있게끔 지원해준다.
이번 글에서는 해당 내용을 설정하는 방법에 다뤄보려한다.
템플릿 엔진 캐싱 방법
필자같은 경우는 타임리프로 현재 개발을 진행하고있기에 타임리프로만 설정을 할 것인데, 다른 템플릿 엔진도 비슷하게 설정할 수 있으니 이 점 확인 바란다.
기본적으로 모든 템플릿 엔진인 FreeMarker, Groovy Templates, Thymeleaf 등 캐싱 활성화 속성이 True로 되어있다. 따라서 캐싱을 비활성화 하려면 false로 설정하면 되는데, 이 방법은 아래와 같다.
application.properties 파일에 다음을 추가하면 된다.
spring.thymeleaf.cache= false
단, 주의할점은
프로덕션에서 애플리케이션을 배포할 때는 설정한 속성을 삭제하거나 true로 변경해야 한다.
이 설정은 개발할 때 편의성을 위해서만 사용하기를 권장한다.
하지만 이 전 포스트에서 설명한 이전 글에서 소개했던 DevTools를 사용하는 것이 훨씬 더 간편하다. 개발 시점에 DevTools는 많은 도움을 제공하며, 모든 템플릿 라이브러리 캐싱을 비활성화 해주기 때문이다. 또한 애플리케이션이 실무 운영을 위해 배포할 때면, DevTools 자신이 비활성화되므로 캐싱이 활성화 될 수 있다.
'Programming > Spring' 카테고리의 다른 글
[Spring Boot] MyBatis 카멜케이스 변환 방법 (Snake -> Camel Case) (1) | 2022.05.02 |
---|---|
[Spring Boot] @SessionAttridutes, @ModelAttribute란? (0) | 2022.04.09 |
[Spring Boot] @Vaild 유효성 검사 하는 방법 (개념/ 예제) (1) | 2022.04.08 |
[Spring Boot] DevTools는 무슨 역할을 할까? (기능 / 특징) (0) | 2022.04.07 |
[Spring Boot] JAR / WAR 배포는 무엇으로 결정할까? (개념 / 특징 / 차이점) (0) | 2022.04.06 |
댓글