티스토리 뷰

③ 미들웨어/ⓦ WebtoB

[WebtoB] Caching Test

와스프로 GodNR 2018. 7. 6. 14:43
728x90
SMALL

 포스팅은 WebtoB 캐싱관련 테스트를 다루어 보겠습니다.



1. Conditional GET
HTTP 프로토콜은 캐시 메커니즘을 정의하고 있다. 클라이언트가 서버로 요청을 보낼 때 Conditional GET Request라는 파라미터를 가진 요청을 서버로 보냄으로써 리소스가 갱신되었는지 확인 할 수 있다. 이 요청에는 If-Modified-Since라는 헤더 정보가 붙게 되는데 RFC 2822 형태로 날짜와 시간 값이 붙게 된다. 이 날짜와 시간 값을 확인하여 조건이 맞으면 캐시 된 웹 페이지를 전달하고 304 Not Modified 헤더를 클라이언트에 응답 보낸다.

2. WebtoB 캐시 기능
WebtoB는 기본적으로 IMAGE, HTML, DIR Caching을 지원한다. HTH 프로세서에서 캐싱 관리를 하고 이미지의 개수가 많거나, 사이즈가 큰 경우 Entry 개수를 조정하여 튜닝 할 수 있다.

 

기능

기본값

설명

CacheKey

HOST_URI

캐싱하기 위한 Key 값을 생성할 때 사용할 값 설정

4.1.5.0 이상 REAL_PATH 지원

CacheEntry

128

HTH 캐시(Cache) Hash 테이블 키의 크기를 설정

MaxCacheMemorySize

100Mbyte

HTH 프로세스가 캐시를 위해 사용하는 최대 메모리 사이즈를 설정

4.1.5.0 이 후 버전에서 적용 됨

CacheMaxFileSize

4096byte

캐시할 수 있는 응답(Response Header + Response Body) 하나의 최대 사이즈 설정

4.1.4.0 이전 버전은 HttpOutBufSize보다 작은 파일 Cache 

CacheRefreshHtml

3600

캐시된 응답 중 "Content-Type" "text/html"인 응답에 대한 유효시간 설정(SVRTYPE HTML 인 경우)

CacheRefreshImage

3600

캐시된 응답 중 "Content-Type" "text/html"이 아닌 응답에 대한 유효시간 설정(SVRTYPE HTML인 경우).

CacheRefreshJsv

3600

JEUS로부터 받은 응답을 캐시하는 경우 응답 유효시간을 계산하기 위한 설정, 4.1.5.0 이 후 버전에서 적용 됨

CacheRefreshRproxy

3600

Reverse Proxy로 처리된 응답을 캐시는 경우 유효시간을 계산하기 위한 설정, 4.1.5.0 이 후 버전에서 적용 됨

 

http.m 설정 

*NODE

CacheKey = HOST_URI,   #(default)

CacheEntry(ce) = 1024,

MaxCacheMemorySize(mcms) = 100,        # (MByte)

CacheMaxFileSize(cmfs) = 4096,             # (Byte)

CacheRefreshImage = 3600,                 # (sec.)

CacheRefreshHtml = 3600,                  # (sec.)

CacheRefreshDir = 3600,                    # (sec.)

CacheRefreshJsv = 3600,                    # (sec.)

CacheRefreshRproxy = 3600,                # (sec.)

 

3. WebtoB 캐시 관리

캐싱 된 정보 삭제 (wsadm) : cr -a

cache ( DIR HTML IMAGE ) is refreshed


캐시에 저장된 응답 정보 출력 (wsadm): cachelist

Cache contents files are created in /tmax/WebtoB/log/cachelist/. Please check the directory.


특정 확장자 캐시 설정

*EXT

jpg MimeType = "image/gif", SvrType=HTML, Options="-cache"


4.   Conditional GET 발생 시점



1) 브라우저를 통해 요청 -> HTTP 헤더에 파일의 마지막 수정시간(Last-Modified)을 포함하여 Client에 응답

2) 재 요청 시 서버로부터 받은 파일의 If-Modified-Since을 포함하여 Conditional GET 요청 

->수정시간 비교 후 같을 경우 상태코드 304 HTTP 헤더에 포함하여 Client에 응답

728x90

5. WebtoB 캐싱 테스트

테스트 방법

$ telnet 127.0.0.1 80

GET /test.html HTTP/1.1

host:127.0.0.1

 

파일 수정시간(Last-Modified) 변화 시 응답결과

a. "If-Modified-Since"값이 "Last-Modified" 보다 작은 값 요청


$ telnet 127.0.0.1 80

GET /test.html HTTP/1.1

host:127.0.0.1

If-Modified-Since: Wed, 30 Jul 2001 20:43:33 GMT

HTTP/1.1 200 OK

Date: Wed, 30 Jul 2014 14:42:53 GMT

Last-Modified: Wed, 30 Jul 2014 14:40:41 GMT

Accept-Ranges: bytes

Content-Length: 46

Content-Type: text/html

결과: 변경사항이 있음으로 판단하고 WebtoB 캐시 응답


b. "If-Modified-Since"값이 "Last-Modified" 보다 큰 값 요청

$ telnet 127.0.0.1 80

GET /test.html HTTP/1.1

host:127.0.0.1

If-Modified-Since: Wed, 30 Jul 2025 14:40:41 GMT

HTTP/1.1 304 Not Modified

Date: Wed, 30 Jul 2014 14:42:53 GMT

결과: 변경사항 없음으로 판단하고 브라우저 캐시 응답


6. ForceCacheModificationCheck 옵션 적용결과

ForceCacheModificationCheck는 *NODE절에 설정되고 Conditional GET 요청이 아닐 경우에도 모든 요청에서 캐시상태 체크 할 지에 대한 설정이다.
a. ForceCacheModificationCheck = N

test.html파일 내용 수정 후

“Test Page for WebtoB Installation on Web Site” -> “Test Page for WebtoB Installation on Web Site, Modify !!”

Conditional GET 요청이 아닌 경우

$ telnet 127.0.0.1 80

GET /test.html HTTP/1.1

host:127.0.0.1

“Test Page for WebtoB Installation on Web Site”

 

Conditional GET 요청일 경우

GET /test.html HTTP/1.1

host:127.0.0.1

If-Modified-Since: Wed, 30 Jul 2014 20:43:33 GMT

Test Page for WebtoB Installation on Web Site, Modify !!

결과: 최초 요청에는 WebtoB 캐시 변경사항을 확인 하지 못하였고 재 요청 시 Conditional GET의해 수정사항 반영 됨, WebtoB Cache 갱신 시점은 Conditional GET 요청임을 알 수 있음


b. ForceCacheModificationCheck = Y

test.html파일 내용 수정 후

“Test Page for WebtoB Installation on Web Site” -> “Test Page for WebtoB Installation on Web Site, Modify !!”

Conditional GET 요청이 아닌 경우

$ telnet 127.0.0.1 80

GET /test.html HTTP/1.1

host:127.0.0.1

Test Page for WebtoB Installation on Web Site, Modify !!

 

Conditional GET 요청일 경우

GET /test.html HTTP/1.1

host:127.0.0.1

If-Modified-Since: Wed, 30 Jul 2014 20:43:33 GMT

Test Page for WebtoB Installation on Web Site, Modify !!

결과: 모든 요청에서 WebtoB 캐시 변경사항을 확인함.


Cache를 활용하면 변경되지 않은 정적 파일을 캐싱하여 보다 성능상 이점을 가져올 수 있다. 다만 너무 많은 파일과 사이즈를 메모리에 담게 되면 장애를 유발할 수 있어 사이즈 제한/전체 Entry 공간 등 적절한 설정의 튜닝이 필요할 것이다.
고맙습니다.


728x90
LIST
댓글
댓글쓰기 폼