본문 바로가기

Flex

FLEX RSL 사용해서 다이어트 하기

대부분의 RIA 사이트는 느리다.
SWF 파일이 크고 왠지 플레시를 사용했으니 뭔가 가만히 있지 않고 움직여야 하지 않느냐 하는 요구 때문에 점점 파일은 커지고 로딩하는데 시간이 걸리게 된다.
HTML과 달리 일단 로딩하면 페이지 이동이 없다는 것으로 클라이언트를 설득하면서 넘어가게 되는데 RSL을 사용해서 다이어트를 해보자

RSL은 Runtime Shared Library의 약자이다.
말그대로 미리 라이브러리를 로드하고 그것을 사용하는것이 아니고 Runtime에 공유 라이브러리를 사용하겠다는 것인데.

이게 처음에는 좀 뜻이 모호하다는 생각이 들었다. 단편적으로 이미지나 컴포넌트 같은것을 따로 빼내놓고 그것을 가져다가 사용한다는 것으로 알고 있었던 것이다.

하지만 RSL은 프레임웍도 런타임에 로드 할수 있도록 해준다.

사용법은 간단하다.

플렉스프로젝트의 Property 에서 Flex Build Path 를 선택해서 살펴보면 상단에 콤보박스가 있다.

이것을 Merge into Code 에서 Runtime Shared Library(RSL)로 바꾼다.


이렇게만 해주면 일단 준비는 끝이다.. 바뀐것을 확인 하고 싶으면..

SDK의 framework.swc 를 살펴보자.


RSL URL 항목에 framework_3.4.0.9271.swz 라는 링크가 보인다.
이것이 공통프레임웍 부분이다.

Edit를 눌러서 살펴보면


Deployment paths에 두개의 파일이 등록되어있는것을 알수 있다.

이 두 파일은 실제로 하는 일이 같고 swz 확장자의 파일은 최신의 플레이어를 위한것이고 swf 는 swz를 지원하지 않는 플레이어를 위한 파일이다.

이렇게 생성된 파일은 웹브라우저가 아닌 플레이어에 캐시되고 이 파일은 Adobe에서 signed 된 파일이기 때문에 브라우저 캐시를 지워도 사라지지 않고 남게 된다.

다른 어플리케이션에서 RSL을 사용하는 경우 이 파일이 없으면 새로 다운을 받고 있으면 다운 받지 않고 있는 것을 사용하게 된다.

라이브러리 패스에 잡혀있는 다른 swc들.. ex) flex.swc 같은 경우도 RSL로 따로 뺄수 있고 라이브러리 프로젝트를 만들어서 커스텀 라이브러리 swc를 가지고 있는 경우에도 마찬가지로 RSL 로 사용할 수 있다.

중대형 프로젝트에서는 어플리케이션이 하나가 아니고 모듈 등으로 나눠져 있는 경우가 많기 때문에 RSL의 사용은 선택이 아닌 필수가 된다.

이때 약간 주의 해야 할 점이 있는데 이것은 아래의 용량 변화 표를 보고 이야기 해보자.

RSL 사용 전후 크기 변화 (단위 : KB)

   사용전  사용후
 index.swf  495  224
 serviceCreator.swf  702  283
 serviceManager.swf  349  97
 taskManager.swf  291  83
 serviceViewer.swf  637  138

공통 파일
framework_3.4.0.9271.swz   556
framework_3.4.0.9271.swf   553

위의 두개는 어플리케이션이고 아래의 세개는 모듈이다.
용량을 보면 거의 30% 정도로 크기가 줄어들었다. 
이때 주의 해야 할 점은 공통파일이 최소 한번 로딩되어야 한다는 것이다. 
일단 한번 로딩되고나면 클라이언트에 캐시로 잡히기 때문에 더이상은 신경쓰지 않아도 된다.

만약에 index.swf 만 사용한다면 로딩되어야 하는것은 495kb -> 224+556= 780k 로 오히려 늘어나게 된다. 
하지만 메뉴를 하나라도 불러서 사용하게 된다면 그때부터는 이득을 볼 수 있다. 

이 부분만 적용하고자 하는 프로젝트에서 확인하고 적용하면 될것이다.

아무리 인터넷 속도가 빨라졌다고 해도 RIA 사이트는 아무래도 다른 사이트보다 늦게 뜨게 된다. 기본 프레임웍을 RSL을 사용해서 로딩 부담을 줄이고 라이브러리 프로젝트를 사용해서 자주 사용되는 부분들만 따로 빼서 관리 하는것 만으로도 사용자의 부담을 훨씬 줄일수 있지 않을까 생각한다.

더 심도 있는 내용은
DieBuster  http://www.diebuster.com/?p=676  요쪽 히카님블로그에서 살펴보면 된다.
뭔가 레벨이 다른 분이라 오히려 적용보다는 참고만 하게 되는 블로그 -ㅅ-;