`

加快flex应用启动

    博客分类:
  • flex
阅读更多
Jun Heider在O’Reilly的InsideRIA站点上发表了一篇精彩的文章,该文章就如何加快Flex应用的启动速度提出了很多建议,以帮助用户减少看见讨厌的“Loading”对话框的出现时间。他深入探讨了问题的不同方面,并对每种技术的优势和劣势进行了评判。


从外部加载媒体(Media)
      Heider提到了一个常用的Flex最佳实践——限制嵌入到应用/SWF文件中的媒体的数量,如图像、影片及mp3等资源都可以从外部的SWF文件加载。
      Flex框架可以直接将图片、mp3及字体等资源编译到SWF中。当你想让最终用户获得全部资源时,这种方式确实能派上用场,但是这会导致你的应用长时间停留在“Loading”阶段。



在嵌入式字体中限制字符集
      Heider建议在嵌入式字体中限制字符集以降低SWF文件的总下载时间:
当你在Flex中嵌入一种字体时,你就会获得该字体的全部字符的支持。尽管这可能是你想要的,但你确信你需要全部字符么?例如,在一个只面向英文的应用中,你确信你真的想花时间下载中文字符数据么?


缓存框架
        Heider回顾了Flex 3 support for runtime-shared-libraries (RSL)这篇文章:

从Flex 3开始,你可以将Adobe签名的框架——RSLs缓存到Flash Player的cache中。这有两个好处。首先,缓存在Flash Player cache中的签名的框架RSLs可由所有配置好的Flex应用共享。换句话说,如果某人的应用已经下载了500k的签名的框架RSL,并且该RSL仍旧 在Flash Player cache中,那么你的应用就可以使用缓存下来的RSL。其次,即使某人清空了其浏览器缓存,对Flash Player cache也没有任何影响。
考虑模块化 Heider谈到了将Flex应用划分成模块的好处:
减少字体加载时间的另一种方式就是将你的Flex应用划分成模块。使用模块的一个好处在于当加载和卸载模块时你能完全操控它。



考虑模块化

      之所以要划分成模块的最后一个原因是他们更快,而且我能即时加载它们。换句话说,在启动时唯一需要加载的模块就是 Step1.swf模块。因此,在使用模块的情况下,最终用户节省了启动时间,但是当他从一个模块切换到另一个模块时却需要花更多时间,因为每个模块都需 要以JIT形式加载。在我的应用中,只有当用户首次在steps 1-5之间切换时需要花更多时间。


推迟实例化
        Heider围绕着Flex组件的“creationPolicy”属性及何时实例化应用的不同部分给出了很多建议。

如果你想减少从数据下载到用户真正可以使用的总时间,当务之急就是推迟实例化。这项技术背后的理念就是直到应用真正使用的时候才在内存中创建对象。

尽管推迟实例化技术会在应用的整个使用过程中导致少许——通常不那么明显——的延迟,但与长时间的启动延迟相比,它还是可接受的。推迟实例化的另一个好处在于内存使用的优化。


       Heider还谈到了一个“实验性”的条款——“使用流”,这是他在讨论Dirk Eismann的帖子(Building monolithic Flex SWFs that still startup quickly.”)时谈及的。Eismann提出一项技术以利用Flash Player中的多个frames以在部分应用中达到流的目的。查看所有的帖子以更多地了解该技术及关于加快Flex启动速度的建议。
分享到:
评论

相关推荐

    Flex ™ Builder 2

    4. 安装完成后启动 Flex™ Builder 2 并进行基本的设置,比如选择工作空间路径等。 #### 六、Flex™ Builder 2 的学习资源 对于初学者来说,可以从以下几个方面入手学习: - **官方文档**:Adobe 官方网站提供了...

    flex4 IDE 修改及时编译 教程

    在这里,你可以创建新的调试配置,设定启动应用的方式,如URL参数、启动场景等。 2. **热部署**:Flash Builder支持热部署,即在运行状态下修改代码并保存后,应用会自动更新。只需确保“Build automatically”选项...

    Blazeds_Flex_Java_new

    - **提高开发效率**:Flex 采用 CS(客户端/服务器)架构,可以显著加快开发速度,减少开发负担。 - **提升用户体验**:Flex 提供了丰富的界面组件和动画效果,能够创建出美观且响应迅速的应用程序。 - **利用客户端...

    Flex 延迟加载 问题说明 处理 实现

    例如,当一个Flex应用程序包含大量组件时,如果所有组件都在启动时加载并渲染,这将大大增加初始加载时间。通过采用延迟加载技术,可以让不立即可见或使用的组件延迟加载,从而提高整体性能。 ##### 4.1 实现方法 ...

    flex 中图片做地图

    在这种场景下,"flex 中图片做地图"通常指的是利用Flex技术进行地图分块加载,以提高应用性能和用户体验。地图分块加载是一种优化策略,通过只加载用户可视区域内的地图部分,降低内存占用并加快加载速度。 首先,...

    Flex 性能优化常用手法总结

    然而,伴随着Flex应用的增多,其性能优化问题也日益凸显,尤其是在带宽有限的环境下,如何提高Flex应用的性能,减少加载时间,优化用户体验,成为了一个重要课题。 首先,从外部加载媒体资源是一种常见的优化手法。...

    MiniCore:这是有关flex RSL的微型核心。-开源

    RSLs可以被多个应用程序共享,这使得开发人员能够更有效地利用网络带宽,并加快应用程序的启动时间。而MiniCore,正如其名,是这个概念的一个精简版,它专注于提供必要的核心功能,以满足小型或特定需求的Flex应用。...

    罗克韦尔-PowerFlex525交流变频器简介.pdf

    - **模块化设计**:有助于减少备件库存,加快变频器的安装和配置过程,降低维护成本。 2. **集成的安全功能** - **内置安全断开扭矩功能**:符合SIL3/PLe类别3的安全标准,确保了人员和设备的安全。 - **集成...

    luya-kickstarter-bootstrap4:LUYA样板程序可以通过Bootstrap 4启动项目

    LUYA Bootstrap 4 Kickstarter应用程序 注意:从Bootstrap 4开始,网格完全用FLEX编写。 检查以确定是否要对项目使用Bootstrap 4。 安装 composer create-project luyadev/luya-kickstarter-bootstrap4 前端 图书馆...

    astotsTool.zip

    在这个特定的应用中,用户只需解压下载的"astotsTool.zip"文件,然后运行里面的"astotsTool.air",就能启动这个转换工具。 该工具的设计理念十分人性化,它提供了简单直观的界面,使得转换过程变得极其简便。用户只...

    Keil5 与 Keil4 主要区别

    这一特性可以大大减轻开发者的工作负担,减少出错的可能性,并加快项目的启动速度。 6. **Keil5 HAL的驱动代码**:HAL(Hardware Abstraction Layer)驱动代码是 Keil5 的另一大亮点。通过提供一套标准的 HAL 库,...

    angular_mobile:移动角度4

    AOT编译则可以减少应用的体积,加快启动速度。 ### 三、Angular Mobile开发实践 #### 1. 安装与配置 要开始Angular Mobile项目,首先需要安装Angular CLI,然后创建一个新的项目,选择移动优化选项: ```bash ng...

    eda设计(二).pdf

    - 支持的设备包括:ACEX1K系列、APEX20K系列、APEXII系列、FLEX6000系列、FLEX10K系列、MAX3000A系列、MAX7000系列、MAX9000系列;MAX7000/MAX3000等乘积项器件;MAXII系列、Cyclone系列、CycloneII、StratixII系列...

    install nusmv in xp

    Cygwin是一个在Windows平台上运行的类Unix环境和工具集,它提供了一个命令行界面来执行Unix命令,并且能够运行大部分Unix下的应用程序。Cygwin安装包括以下几个步骤: 1. 下载Cygwin的安装程序setup-x86.exe。 2. ...

    1、阿里(29问).pdf

    webpack在启动后会从配置的入口文件开始,递归解析所有依赖模块,然后调用插件的apply方法。 ### webpack dev-server webpack-dev-server是一个小型的Node.js Express服务器,用于开发环境下的热模块替换(Hot ...

    在Ubuntu上编译android.pdf

    6. **安装编译依赖**:文档中提到了安装各种编译依赖,包括但不限于flex、bison、libncurses5-dev、gperf、libesd0-dev、libwxgtk2.6-dev、build-essential、zip、curl、libssl-dev、libxml2-utils等。这些依赖包是...

Global site tag (gtag.js) - Google Analytics