[질문] Javascript를 이용한 데이터 압축에 대해 조언 부탁드려요~

981 views
Skip to first unread message

이용희

unread,
Jan 10, 2011, 9:05:51 PM1/10/11
to Korea Spring User Group
안녕하세요. 모두 새해 인사가 좀 늦었지만 새해 복 많이 받으시길 바라겠습니다.

스프링관련 질문이 아니라 조금 죄송스럽기는 하지만 제가 아는 커뮤니티중 KSUG 멤버들 만한 실력과 경험을 가지고 계신 분들이 없어서
부득이 이곳에서 조언을 구해 봅니다. ^^

상황은 Web 기반의 클라이언트에서 서버측으로 Json 전문을 전송합니다.  ( XML도 마찬가지 )
그런데 이 전문이 무지 길어요.. 또한 서버측에서 UI 로 전송해 주는 Json 응답전문도 굉장히 깁니다. ( 경우에 따라서는 몇Mb 정도까지..)
그래서 이 전문을 Gzip으로 압축해서 송/수신하고 싶습니다.

일단 Javascript를 이용한 압축방법에 대해서 구글링을 해 보았더니
 LZ77, LZW 등의 압축 알고리즘을 이용한 방식이 있던데 압축 효율이 좋지 않고 서버측에서 decompress하기에 일반적인 방법이 아니라서 
사용하기에 적절하지 않았습니다.

Http Header 의 encoding type을 Gzip으로 설정하여 이용한 압축 전송은 js, css등의 static resource 들에 대한 minify 방식이라 사용할 수 없을 것 같네요.

저와 비슷한 고민을 하신 분들이 분명 있을 것 같은데 값진 경험 좀 나누어 주시면 새해를 좀 더 따뜻하게 보낼 수 있을 것 같습니다. ^^

감사합니다.

--
이용희(Yonghee Lee)
Tel : 010-5213-0417
E-mail :  yhl...@gmail.com
nateon: man...@nate.com

Sungchul Park

unread,
Jan 11, 2011, 1:45:44 AM1/11/11
to ks...@googlegroups.com
안녕하세요.
특이한 상황이시네요. ^^
저는 이런 상황에 처한 경험이 없어서 그냥 의견만 말씀드릴 수 밖에 없네요.

어찌 되었 건 클라이언트 측에서 압축을 해서 보내는 방법을 찾아야겠는데요.
이미 검색을 해보셨다니까 나와있는 기법 중에 맘에 드시는 것을 선택하시면 될 듯 합니다.

LZW가 안 좋다고 하셨는데 그리 형편없는 녀석은 아닙니다. gzip이나 zip이 사용하는 DEFLATE 알고리듬이 LZW와 같은 LZ77 기반으로 하되 LZW의 특허를 피해 만든 알고리즘으로 알고 있습니다. LZW는 tiff나 gif에서 사용되던 알고리듬이고요. 요즘은 LZW의 특허가 풀렸으니 LZW를 쓰는 게 더 좋지 않을까요?
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.

"손권남(KwonNam Son)"

unread,
Jan 11, 2011, 1:55:08 AM1/11/11
to ks...@googlegroups.com
클라이언트에서 서버로 보내는 것은 직접 압축하여야 할것 같고요(혹은 자동
으로 압축해주는 옵션이 있는지 정확히 모르겠습니다).

서버에서 클라이언트로는 고민하실 필요 없습니다.
원래 웹서버를 운영할 때는 아파치 등의 웹서버에서 HTML등의 데이터를 압축
해서 클라이언트로 보내도록 옵션을 지정할 수 있습니다. 확인은 안해봤지만
JSON 같은 대부분의 텍스트 데이터를 다 압축할 수 있게 할 수 있는걸로 압니다.

개발자는 그냥 옵션만 지정하면 되고 개발 자체는 압축과 무관하게 하시면 됩
니다.

2011년 01월 11일 11:05, 이용희 쓴 글:

> E-mail : yhl...@gmail.com <mailto:yhl...@gmail.com>
> nateon: man...@nate.com <mailto:man...@nate.com>

이용희

unread,
Jan 11, 2011, 11:08:44 PM1/11/11
to ks...@googlegroups.com
답변 고맙습니다.
테스트를 해 보니 아파치 같은 웹서버에서는 content-encoding 헤더에 gzip이라고 설정하면,
웹서버가 바로 gzip으로 압축해서 보내는 것 같습니다.(mod_deflate 인가 하는 모듈이 설치되어 있어야 하죠?)

저는 WAS에 바로 연결하는 케이스라 response에 gzip으로 압축해서 write하니 브라우저에서 자동으로 decompress하는걸 확인했습니다.

이로서 서버에서 클라이언트로 보내는 메시지에 대한 압축은 해결이 된 것 같습니다.

이제 남은 것은 
"클라이언트에서 서버로 전송하는 메시지는 압축할 필요가 없다" 라고 설득하는게 남았네요. ㅎㅎ

생각해 보니 요청전문은 사이즈가 아주 커지지 않을 것 같고, 왠만한 사이즈가 안된다면 굳이 압축하는게 오히려  비 효율적인 것 같네요.

감사합니다. ^^


2011년 1월 11일 오후 3:55, "손권남(KwonNam Son)" <kwon...@gmail.com>님의 말:
Reply all
Reply to author
Forward
0 new messages