RSL也需要謹慎使用
RSL也不是對于所有的應用都是有益的. 需要對應用RSL前后的下載時間和啟動時間都測試過, 才能得到正確的結論.
RSL不能跨域共享. 如果客戶在一個域中使用了RSL, 然后運行了另一個域的應用, 雖然這兩個RSL是相同的, 但是需要下載兩次.
RSL通常會增加應用的啟動時間. 這是應用不管整個庫實際如何使用, 只是簡單地全部加載整個庫. 就這一點來說, RSL越小越好. 這與靜態鏈接庫的使用是不同的. 當你編譯一個Felx應用時, 編譯器只解開需要的組件. 一般來說, 庫的大小可以是任意的, 它只影響編譯時間而不會影響下載的時間.
如果在好幾個應用中使用相同的組件庫, 那么可以考慮合并這些庫, 形成一個RSL. 但是如果庫合并后, 每個應用只會用到其中的一小部分, 那么還不如多加載幾個小RSL更高效.
如果一些類重復打包在多個RSL中, 那么一定要注意同步更新的問題.
RSL不能應用在基類是Sprite或者MovieClip的純ActionScript項目中. 因為RSL需要基類知道如何加載RSL, 比如: Application或者SimpleApplication.
關于?framework.swc文件
framework.swc是一個標準的SWC文件. 缺省地它不能用作RSL. 整個framwork.swc文件不被鏈接到任何一個應用中. Flex編譯器只將那些應用用到的部分鏈接到生成最后的SWF文件. 比如: 如果一個應用只使用了Button, Panel和TextArea控件, 那么只有這幾個控件和它們的依賴項被編譯器鏈接.
幾乎所有的應用都需要framework.swc文件的一部分, 但是它并不適合作為RSL. 原因如上據說, RSL是整個鏈接, 不管實際使用多少的. 如果RSL包含了很多類, 而應用只使用了其中的一小部分, 那么這樣的加載方式并不是最合理的. 這樣使用會造成應用的啟動時間大大增加.
RSL的優點
下面的一個例子說明了將幾個的共享組件做成RSL的優點. 在這個例子中, 組件庫的大小是150K, 編譯后的應用的大小是100K.
?
使用了RSL, RSL只被下載一次. 那么合計下載量是350K, 節約了30%. 如果再添加第3個, 第4個應用的話, 每次都能150K的下載量.
一般來說, 在一個域中使用同一個RSL的應用越多, 那么好處就越大.