zoukankan      html  css  js  c++  java
  • 使用RSL 给FLEX 瘦身

    经常在群里和FLEX爱好者们聊FLEX,难免会提及FLEX的优点和不足,FLEX的优点今天就不浪费口舌了,作为业界人士的你,RIA的趋势以及各种技术的优劣早已心知肚明,采用这个标题其实我并非底气十足,毕竟我和大多数人一样,只是普通的爱好者,FLEX还不到炉火纯青的程度,但我自己关注FLEX以及投身FLEX的浪潮已不止数日,想把这方面的心法写出来和大家一起探讨和分享.

     

    有过FLEX,RIA产品或项目体验的用户或开发者都通晓.FLEX那第一件华丽的外衣,在加载时总是犹抱琵琶半遮面,不仅让身为用户的他们也让作为开发者的我们都为这美中不足不禁有过埋怨,和长叹.然而,不管你是一个追求完美的开发者,还是迫于用户或客户的压力来对此寻求良好的解决方案,其实我们往往都没有得到良好的效果.个中原因,先看看我们通常的解决方案再回过头来探讨.

     

    解决方案之一:RSL

     

    我在网上以及论坛里遇到过很多FLEX爱好者,他们很擅长用FLEX制作极具交互性以及华丽的UI,但是在编译后却发现简单的几个control,为什么会生成几百K甚至更大的SWF文件呢?百思不得其解的他们,从百度.GOOGLE以及ADOBE官方文档及网站开始了斩首行动”.因为FLEX开发者们这方面的抱怨不在少数,所以网上的相关文章也眼花缭乱.但他们往往都找到了很让自己信服的解决办法,那就是RSL.

     

    什么是RSL? RSL Runtime Shared Library的简称 RSL = Runtime shared library 运行时共享库,光知晓其名称当然还不够,其实flex framework就是 class + library (类和库) Framework RSL 意思是, Flex的类和库在程序运行时动态加载而不是封装在程序里面,如果不用 Framework RSL, 你的主程序就会使用你编写的代码里必须导入的类,这样一来, 你代码写的越多, 需要导入越多的类, 你程序体积就越大.也就是说, 不用Framework RSL, 你的程序就是这样的:你自己的自定义类代码 + 你必须使用的Flex自带类 (framework)。如果使用了Framework RSL,你的程序就只包含你自己写的类代码而已, 体积就很小了.

     

    到这一步,大多数人就以为抓到了救命草,赶快去FLEX开发指南里找RSL相关介绍,初步偿试果然有奇效,一个原来编译后500KSWF文件,现在瘦成了100K,群里,我经常听到干完此事后那种兴奋的声音.殊不知他没有继续将RSL的了解到底.

     

    其实framework会变成另一个文件, 动态加载到你的程序里,而这个文件体积可不小哦

    下面我和大家一起来做过试验:

    先不运用RSL:

    我新建一个干净的工程.拖入一个Button和一个AdvancedDataGrid,后者巨占资源.编译后是494KB.

    再运用RSL:

    主应用程序减小到232KB,而同目录下躺着的framework文件却有526K;是大了还是小了,可想而知.

    RSL分认证的RSL和非认证的RSL,听说在这里采用的认证的RSL, 经过认证的RSL可以使用Flash Player Cache机制,从而达到更快的启动效率。对于Flex开发来说,Flex组件框架就是属于认证的RSL.说到这里,大家可能被我不明不白的表达弄昏了头脑,不知道我究竟想表达对RSL的什么观点?

     

    别急,从字面上我们再来看一看,RSL即运行时共享库,既然要共享就必须是通用的东西,既然要共享那就是要在两个或两个以上的对象之间.既然是运行时的共享,就是在运行的过程中动态达到的.太好了,结论几乎就这么出来了.

     

    当我们的应用简单到只有几个简单的控件,或者我们用到的共享资源很少, 以及没有多个对象来达成共享时,我们到底还有没有必要来运用RSL?我看不见得在些能起到什么立竿见影的效果.如果哪位朋友有更深入的了解,或新的发现,可以告知小弟,不胜感激.

     

    同样基于上面对于字面意思的推敲,当一个应用很大,甚至由几个SWF文件组成时, 如果每个swf都引用了相同的类的话,那么你编译每个swf的时候,都会把那个类重复编译进去,也是就是说,无形中对整个应用而言,就多了几份类库而增大了内容,那么此时完全满足RSL字面意思推敲的逻辑.用不用RSL,是不需要迟疑的.

     第一步:分离运行库,使用RSL减小FLEX生成文件的体积
    要应用RSL.我们执行下面的步骤:
    1.在项目文件夹中点右建,选择"properties"-"Flex BuildPath"-"Library Path"
    2.该选项卡上我们看到"FrameWork linkage",默认是选中"Merged into code"(打包在里边..大概这意思)
    3.点开下拉,选择"runtime shared library(RSL)",点"OK"

    第二步:使用Release发布
    Flex3通过Build Project编译结果都是Debug版本的,我们在发布的时候选择Export Release:
    选择项目,菜单->Project->Export Release Build...

    还可以使用编译器的优化选项进一步减小swf的体积。

  • 相关阅读:
    技能的切实掌握 必须动手
    sqlite 网址
    android视频教程
    Windows Azure
    mysql 存储过程 获取统计结果
    “道家”幸福生活的组成
    [文摘20110724]徐鹤宁 语录
    eclipse swt
    mysq 存储过程 插入测试数据
    WPF 视频教程
  • 原文地址:https://www.cnblogs.com/czjone/p/1839647.html
Copyright © 2011-2022 走看看