云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          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.
          Application size with and without RSLs?

          使用了RSL, RSL只被下載一次. 那么合計下載量是350K, 節約了30%. 如果再添加第3個, 第4個應用的話, 每次都能150K的下載量.

          一般來說, 在一個域中使用同一個RSL的應用越多, 那么好處就越大.




          評論

          # re: 使用RSL(Runtime Shared Libraries)來減小Flex生成的SWF文件的大小(III) -- RSL的優缺點  回復  更多評論   

          2009-07-21 18:22 by 不能不說
          樓主說
          比如: 如果一個應用只使用了Button, Panel和TextArea控件, 那么只有這幾個控件和它們的依賴項被編譯器鏈接
          Button,Panel,TextArea也不是單獨的,它也依賴framework.swc的某些類,例如:button extends LabelButton
          主站蜘蛛池模板: 台山市| 综艺| 江陵县| 夏邑县| 泗洪县| 苏尼特左旗| 西峡县| 图木舒克市| 广汉市| 巍山| 全南县| 武穴市| 济阳县| 仁化县| 忻城县| 获嘉县| 屏南县| 陈巴尔虎旗| 泰安市| 安阳县| 金川县| 重庆市| 修水县| 武安市| 班戈县| 丽水市| 桃园县| 文登市| 大关县| 永泰县| 临桂县| 昌图县| 安宁市| 玉田县| 明光市| 青州市| 北流市| 嵩明县| 清新县| 岳阳市| 河源市|