Flex应用提高性能的一点心得

做了两年多的Flex开发,一直以来没有时间对之前的内容进行过整理,最近难得闲暇,整理一下分享给大家,希望能对你们有所帮助。

今天探讨一下Flex应用性能的问题。

1、Flex瘦身

所谓瘦身就是尽量减小Flex编译后的SWF的体积。

之所以瘦身是因为我们的Flex应用是需要客户端通过Http下载到本地后,在客户端的FlashPlayer中进行播放运行的,如果客户端需要下载的SWF体积很大,则需要很长的等待时间,这样很多用户的不能够忍受的,最好的让用户在能够接受的下载时间内将我们的SWF展现到他们眼前。(当然这与应用的类型以及软件的使用环境也存在着一些联系,这些我们这里不予讨论),为了缩短下载时间我们能做的就是减小SWF的体积。

如何才能减小SWF体积呢?

一:采用Release发布程序。大家都知道Flex应用在测试和发布的时候是有区分的,测试只需要跑debug目录下的程序很方便调试,但是debug目录下的程序在编译过程中有很多用于调试的信息,导致编译后的swf体积很大,而当我们进行发布时不需要在进行调试,因此需要采用Release发布程序,这样一些用于调试的信息就不会被编译,swf体积也会相应变小。

二:程序中对外部资源的嵌入过多。什么是资源嵌入?例如当我们给某个容器控件设置背景时,有时为了方便部分情况的会写成 backgroundImage="@Embed('images/bg.png')",Embed则告诉编译器“编译的时候你把这个图片给我放到swf中啊”编译器会按照指示将该图片编译到SWF中,如果这样的嵌入式图片应用很多,你的swf的大小就成问题了。当然Embed对于提高对外部资源访问的性能还是很有必要的,只是我们在使用时根据情况而定。(具体使用方法我会在日后发问讨论)。

三:使用Module开发方式进行开发设计。如果应用模块很多,采用Module是一个很好的选择,Module可以将SWF体积分担到每个模块,采取用到的模块下载,没有用到的模块暂不下载的策略进行模块的加载,这样提高了应用的下载速度。(但是需要多加载几次)

2、RLS组件库共享

右键点击工程--Flex Build Path--Library path

在Framework linkage处选择RSL。同时将Verify RSL digests复选框勾上,点击OK即可

这样不广影响了swf体积,同时客户端在运行swf时也会提高效率。具体相关知识网上很多,在这里不在重复。

3、开发经验闲谈

这方面主要影响Flex应用的运行性能,主要在以下几方面考虑。

一:控件选择与嵌套。控件尽量选择简单的底层的控件,控件嵌套不要太深。感觉BOX之类的控件最好别超过三层嵌套,如果非嵌套不行,则尽量别用横向居中,纵向居中,横向控件间距,纵向控件间距,或大小百分比之类的属性,性能影响明显。

二:多应用实例化推迟控件,何谓实例化推迟控件?例如:ViewStack、TabNavigator、Accordion应为这些控件的creationPolicy默认为“auto”,就是说在他们中的子控件不是一次全部初始化,而是根据实际需要逐个进行初始化的,这样大大提高了Flex的运行效率。

三:特效的应用要慎重,Flex很炫特效是关键,我们需要这些元素提高用户体验,但是如果特效应用不流畅,给用户的体验还不如不用特效的好。往往控件体积大,特效播放过程中程序负载(计算量、RPC调用、绘制页面等)过大往往造成特效应用不流畅。需注意。

四:对象垃圾回收。Flex缓存是提高体验的关键,但是长时间的运行往往会造成客户端内存的吃不消,这里问题很多也很难处理,最重要的是对象资源未释放,当对象实例使用完毕时需要将其设为null并切断和外部的一切关联,虽然说起来很简单但操作并不是很理想。往往我们会忽略addEventListener。事件的监听往往是垃圾回收器不能及时回收资源的主要原因,这里需要大家了解Flex中关于事件弱引用的知识。(以后发文讨论)

当然还有其他很多细节的问题例如:系统架构的应用、对象垃圾回收机制、RPC应用、数据绑定应用等等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值