22.3.使用Flex Framework作为RSL

22.3.1.问题
我想减少链接到Flex框架RSL的应用程序文件大小和下载时间。
22.3.2.解决办法
使用framework.swc文件编译应用程序,在Flex 3 SDK安装目录下可找到这个文件。
22.3.3.讨论
如果你熟悉用Flex Framework开发过应用程序的话,你可能注意到生成的文件很大,接着就是很长的下载时间。甚至是像下面的例子那样简单的程序,当编译时,结果生成的SWF文件和这简单的代码相比却有着出乎意料的文件大小。:
+展开
-XML
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxmllayout="vertical">

<mx:Label text="Hello World" />
</mx:Application>

这个程序没有多少代码,只是添加一个标签组件显示文本Hello World到显示列表。当用mxmlc工具编译程序后,生成的SWF文件大小却接近149KB。这是因为它把Flex组件和库都编译进了应用程序中。这是合理的,毕竟对于运行于Flash Player的独立SWF需要所有的资源提高运行效率,但是,这样一个简单的程序如果在浏览器上载入运行的话,这个文件大小就是一个非常高的代价了。因此有了运行时共享库(RSL)的好处不仅仅解决了文件大小和下载时间,而且还允许多个应用程序访问同一个库资源。因此把整个Flex Framework作为RSL存储在客户端,编译应用程序都动态链接到它是一个非常好的解决方案。

这一特性是Flex 3 SDK和Flash Player release 3 (Flash Player 9.0.60之后)才提供的,可以把Flex Framework从应用程序代码中分离出来。Flex Framework放在Flex 3 SDK的/frameworks/libs目录下:就是framework.swc 文件。而/frameworks/rsl 目录下的是经过签名的Flex FrameworkRSL。在写这本书时,这个文件已被命名为framework_3.0.189825.swz.为签名的RSLs,比如上一节中你自己创建的,会保存在浏览器缓存中,,可被同一个域中的任何程序或用跨域授权文件指定的任何域程序所访问。签名的RSLs (扩展名.swz)会存储在
Flash Player缓存中。Flash Player缓存中签名的RSLs可在配置管理器中删除。只有Adobe才可对RSLs进行签名存储到Flash Player,以此提高安全防止第三方工具注入攻击及执行代码。

要编译动态链接到前面的Flex Framework RSL的应用程序,你需要使用mxmlc工具的runtimeshared-library-path 参数:
> mxmlc HelloWorldApplication.mxml –target-player=9.0.60
–runtime-shared-library-path=
/<sdk-installation>/frameworks/framework.swc,
framework_3.0.1.189825.swz

runtime-shared-library-path选项第一个参数值表明framework.swc文件的具体位置,第二个参数( 直接用逗号分开) 是签名的Flex Framework RSL 名称。在编写此书时framework_3.0.1.189825.swz 文件在/rsls目录里。

把SWZ文件和编译生成的应用程序SWF放在服务器的同一个域里,当应用程序首次被下载时签名的RSL会被载入到客户端的Flash Player缓存中。任何使用runtime-shared-library-path编译参数编译的应用程序都可以调用这个缓存文件。也就说其他开发者使用同一个编译参数也可以使用这个缓存的RSL,这是很有好处的。

不使用RSL编译生成的SWF文件大小接近149KB,而动态链接到Flex Framework RSL的应用程序仅仅49KB。

加支付宝好友偷能量挖...


评论(0)网络
阅读(71)喜欢(0)flash/flex/fcs/AIR