일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- STS
- Eclipse
- Source
- SpringBoot
- spring
- MSSQL
- Core Java
- JavaScript
- 설정
- 오픈소스
- git
- myBatis
- PostgreSQL
- ubuntu
- Open Source
- Docker
- Tomcat
- oracle
- Python
- 문서
- error
- maven
- IntelliJ
- jpa
- Spring Boot
- AJAX
- Thymeleaf
- MySQL
- Exception
- JDBC
- Today
- Total
헤르메스 LIFE
[Spring MVC] cache-period 설정 본문
출처 : http://cizel.kr/bbs/board.php?bo_table=10_16&wr_id=982&sfl=mb_id%2C1&stx=api
CSS, JS, 이미지 등의 자원은 거의 변하지 않기 때문에, 웹 브라우저에 캐시를 하면 네트워크 사용량, 서버 사용량, 웹 브라우저의 반응 속도 등을 개선할 수 있다. 이런 정적 자원은 보통 별도 웹 서버에서 제공하기 때문에 웹 서버의 캐시 옵션 설정을 통해 웹 브라우저 캐시를 활성화시킬 수 있다. 하지만, 스프링 MVC를 이용하는 웹 어플리케이션에 정적 자원 파일이 함께 포함되어 있다면 웹 서버 설정을 사용하지 않고 <mvc:resources> 설정을 이용해서 웹 브라우저 캐시를 사용하도록 지정 할 수 있다.
<mvc:resources> 태그의 각 속성은 다음과 같다.
- mapping: 요청 경로 패턴을 설정한다. 컨텍스트 경로를 제외한 나머지 부분의 경로와 매핑된다.
- location: 웹 어플리케이션 내에서 요청 경로 패턴에 해당하는 자원의 위치를 지정한다. 위치가 여러 곳일 경우 각 위치를 콤마로 구분한다.
- cache-period: 웹 브라우저에 캐시 시간 관련 응답 헤더를 전송한다. 초 단위로 캐시 시간을 지정하며, 이 값이 0일 경우 웹 브라우저가 캐시하지 않도록 한다. 이 값을 설정하지 않으면 캐시 관련된 응답 헤더를 전송하지 않는다.
출처 : http://kdarkdev.tistory.com/285
Spring MVC 브라우저 캐쉬 제어 설정
기본적인 browser cache 설정 방안
1. static resource에 대해서는 <mvc:resources> element의 cache-period 값 설정
2. dynamic resource에 대해서는 Spring에서 제공하는 WebContentInterceptor의 cacheSeconds 값 설정
* <mvc:resources> 설정
Spring Servlet Context 파일에 설정
설정 예
<mvc:resources mapping="/js/**" location="/js/" cache-period="86400"/>
<mvc:resources mapping="/style/**" location="/style/" cache-period="86400"/>
<mvc:resources mapping="/image/**" location="/image/" cache-period="31556926"/>
cache-period
- Specifies the cache period for the resources served by this resource handler, in seconds.
- The default is to not send any cache headers but rather to rely on last-modified timestamps only.
- Set this to 0 in order to send cache headers that prevent caching, or to a positive number of seconds in order to send cache headers with the given max-age value.
* WebContentInterceptor 설정
Spring Servlet Context 파일에 설정
설정 예 1) /api 아래에 대해서 웹 브라우저 cache 방지
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/api/**/*"/>
<bean class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="0"/>
</bean>
</mvc:interceptor>
</mvc-interceptors>
설정 예 2) /api 아래에 대해서 웹 브라우저 cache 방지, 예외적으로 사진은 하루 동안 cache
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/api/**/*"/>
<bean class="org.springframework.web.servlet.mvc.WebContentInterceptor">
<property name="cacheSeconds" value="0"/>
<property name="cacheMappings">
<props>
<prop key="/api/photo/**">86400</prop>
</props>
</property>
</bean>
</mvc:interceptor>
</mvc-interceptors>
WebContentInterceptor Cache 관련 속성
1) cacheSeconds
- Cache 기간, 초단위 (기본값: -1)
cacheSeconds < 0 cache 관련 헤더를 설정하지 않음 cacheSeconds == 0 cache 방지Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: max-age=0, no-cache, no-storecacheSeconds > 0 cacheExpires: Wed, 03 Jul 2013 05:58:02 GMTCache-Control: max-age=31536000
- Expires 헤더 사용 여부 (기본값: true)
- Cache-Control 헤더 사용 여부 (기본값: true)
- Cache 방지 시(cacheSeconds=0)에 Cache-Control 헤더를 사용할 경우 no-store를 함께 설정할지 여부 (기본값: true)
[출처] Spring MVC 브라우저 캐쉬 제어 설정|작성자 소프
[출처] Spring MVC 브라우저 캐쉬 제어 설정|작성자 소프
'Spring Framework' 카테고리의 다른 글
Spring + JSON 설정 시 유의사항 (0) | 2016.08.16 |
---|---|
[Source] HTML Parsing Source (0) | 2016.03.29 |
[Spring] ParameterizableViewController의 사용 (0) | 2012.07.02 |
[Spring] Eclipse에서 JPetStore 테스트 환경 구축 - Spring Framework 2.5, iBatis (0) | 2012.06.22 |
[Log4j] log4J 에서 콘솔창에 두번씩 sql이 나오는 이유 (0) | 2012.06.13 |