• 검색 결과가 없습니다.

HTTP Response Caching

문서에서 JEUS Web Engine 안내서 (페이지 187-191)

JEUS WebCache는 Servlet Filter를 사용하여 HTTP 응답 전체를 Caching하는 방법으로 HTTP Response Caching 기능을 제공한다.

페이지내용이동적으로변하는웹페이지에는적절하지않으며정적콘텐츠에대한 HTTP 요청에적합한

방법이다. 이미지파일, PDF 등의바이너리콘텐츠를요구하는 HTTP 요청이여기에해당된다. 물론일정

시간동안웹페이지의내용이변경되지않거나변경사항이반영되지않아도되는웹페이지에도이방법 을사용할수있다.

http://www.sample.com/filter/respcacheTest.jsp?key=value

위와 같이 key, value를 포함해서 전체 HTTP URI가 엔트리 키로 적용된다. 만일 key, value 값이 다양하게 변화한다면 각각의 URI에 해당하는 HTTP Response가 Caching된다.

주의

주의할 것은 HTTP Response의 상태가 200 OK(HttpServletResponse.SC_OK)인 경우에만 해당 HTTP Response가 Caching된다는 것이다. HTTP Response를 JEUS WebCache에 저장할 때 사용 되는 엔트리 키로 HTTP URI가 사용된다.

본 절에서는 HTTP Response Caching을 웹 애플리케이션에 적용하는 방법에 대해 설명한다.

6.3.1. 필터 설정

웹 애플리케이션에서 HTTP Response Caching을 사용하기 위해서는 다음과 같이 web.xml에 필터를 등 록한다.

다음은 <url-pattern>이 '/filter/'인 모든 HTTP 요청에 대한 HTTP 응답을 10분 동안 Caching하는 예제이다.

주의할 것은 <filter-class>로 반드시 jeus.servlet.cache.web.filter.CacheFilter 클래스를 사용해야 한 다.

[예 6.4] 필터 설정 : <<web.xml>>

<web-app>

. . .

<filter>

<filter-name>CacheFilter</filter-name>

<filter-class>jeus.servlet.cache.web.filter.CacheFilter</filter-class>

<init-param>

<param-name>timeout</param-name>

<param-value>600</param-value>

</init-param>

<init-param>

<param-name>lastModified</param-name>

<param-value>on</param-value>

</init-param>

<init-param>

<param-name>expires</param-name>

<param-value>off</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>CacheFilter</filter-name>

<url-pattern>/filter/*</url-pattern>

</filter-mapping>

. . .

</web-app>

다음은 필터 클래스에 전달하는 초기화 파라미터에 대한 설명이다.

● timeout

– HTTP Response를 Caching하고 있을 시간을 설정한다. (기본값: 3600, 단위: 초(second))

– JSP Caching에서사용하는 'timeout' 속성과설정방법은동일하다. 단 HTTP Response Caching에

서는 flush 기능이제공되지않기때문에 'timeout'을 '-1'로설정하면웹애플리케이션이 undeploy되지

않는이상 expire되지않기때문에주의한다.

● lastModified

– HTTP 응답으로 Last-Modified 헤더를 보낼지를 결정하기 위해서 사용된다. 이는 웹 엔진의 부하를

줄이는 목적으로 사용된다.

– 브라우저는 자신이 Cache하고 있는 콘텐츠가 마지막 요청 이후에 변경되었는지 웹 엔진에 요청할 수 있다. 그러면 웹 엔진은 HTTP 요청에서 If-Modified-Since 헤더 정보와 현재 엔트리의 최종 변경시 간을 비교하여 엔트리에 변경 사항이 없다는 304 상태코드(HttpServletResponse.SC_NOT_MODIFIED) 를 브라우저로 전송한다.

– 유효한 값은 다음과 같다.

설명 값

최종 변경시간을 Filter Chain 수행 중에 결정하여 304 상태코드를 보낸다.

on

HTTP 응답으로 304 상태코드를 보내지 않는다.

off

최종 변경시간을 현재시간으로 하여 304 상태코드를 보낸다. (기본값) initial

● expires

– HTTP 응답으로 Expires 헤더 정보를 전송할지를 결정하기 위해서 사용된다. 브라우저에서 Cache

기능을 사용하고 있다면 Cache된 콘텐츠는 사용 기간이 만료될 때까지 유효하며 이후에 계속적인 HTTP 요청에 대해서는 브라우저 Cache에 저장된 콘텐츠를 사용할 것이다.

– 만약 JEUS WebCache의 엔트리가 업데이트되었다면 새로운 엔트리는 브라우저 Cache에 저장된 콘 텐츠와 다른 문제가 발생한다. 이런 경우에 웹 엔진에서 Expires 헤더 정보를 설정하여 브라우저 Cache에 저장된 콘텐츠를 기간만료시키고, JEUS WebCache의 업데이트된 엔트리를 사용하도록 해 야 한다.

– 유효한 값은 다음과 같다.

설명 값

Filter Chain에서 값이 설정된다면 Expires 헤더 정보를 전송한다 on

Expires 헤더 정보를 전송하지 않는다.

off

HTTP 응답의 last-modified 값에 상기에 기술한 time 파라미터 값이 더해져서 Expires 헤 더 정보로 설정되어서 클라이언트로 전송된다.

time

참고

위의 파라미터 외에 추가로 scope, size, async, df 등을 설정할 수 있는데, 이들은 “6.2. JSP Caching”

에서 설명한 것과 동일한 의미를 가지고 있으므로 해당 부분을 참고한다.

7 Reverse Proxy

본장에서는웹애플리케이션의성능향상을위한 Reverse Proxy의기본개념과사용방법을예제를통해 설명한다.

문서에서 JEUS Web Engine 안내서 (페이지 187-191)