티스토리 뷰

MiddleWare/Weblogic

GZipFilter 적용

Su-Dong, Han 2012. 9. 3. 10:58


국내 네트워크 인프라 환경에서는 네트워크 통신에 따른 성능문제가 거의 발생하지 않지만,

네트워크 환경이 열악한 해외의 경우 네트워크 접속 횟수, 전송데이터 압축을 통해 성능문제를 해결하곤 합니다.

네트워크 상에서 전송되는 데이터를 gzip으로 압축을 해서 전송을 하게되면 1/3 ~ 1/5 수준으로 데이터가 압축되어

네트워크 트래픽을 줄여주는 효과가 있습니다.


참고 : GZIP compression with Http Filter, GZIPFilter, GZIPResponseStream, GZIPResponseWrapper


브라우저가 서버로 request를 보낼때 받을 수 있는 encoding type을 header의 Accept-Encoding 값으로 세팅하게 됩니다.

Accept-Encoding: gzip, deflate

그러면 서버에서는 이 값을 읽어 압축 처리가 가능하다면 response를 압축해서 전송하게 됩니다. 

이 처리는 웹서버에서도 가능하지만 servlet 2.3부터 지원하고 있는 Filter 기능을 통해서도 가능합니다.

참고 사이트에서 제공하는 GZIPFilter 소스코드를 첨부했고, response header 세팅하는 부분만 수정했습니다.

(기존 코드대로 실행하니 header의 content-length 값과 실제 client가 받는 body length 값이 다른 현상이 생겼습니다.)

해당 Filter에서는 Servlet 처리 후 response data를 gzip으로 압축하는 역할을 해주게 됩니다.

 

GZIPFilter.java

GZIPResponseStream.java

GZIPResponseWrapper.java


댓글