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