大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

加快 Flex 应用启动速度的 5 种方式

  • 2008-05-31
  • 本文字数:1286 字

    阅读完需:约 4 分钟

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

  1. 从外部加载媒体(Media)
    Heider 提到了一个常用的 Flex 最佳实践——限制嵌入到应用 /SWF 文件中的媒体的数量,如图像、影片及 mp3 等资源都可以从外部的 SWF 文件加载。

Flex 框架可以直接将图片、mp3 及字体等资源编译到 SWF 中。当你想让最终用户获得全部资源时,这种方式确实能派上用场,但是这会导致你的应用长时间停留在“Loading”阶段。

  1. 在嵌入式字体中限制字符集
    Heider 建议在嵌入式字体中限制字符集以降低 SWF 文件的总下载时间:

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

  1. 缓存框架
    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 也没有任何影响。

  1. 考虑模块化
    Heider 谈到了将 Flex 应用划分成模块的好处: > 减少字体加载时间的另一种方式就是将你的 Flex 应用划分成模块。使用模块的一个好处在于当加载和卸载模块时你能完全操控它。…

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

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

如果你想减少从数据下载到用户真正可以使用的总时间,当务之急就是推迟实例化。这项技术背后的理念就是直到应用真正使用的时候才在内存中创建对象。尽管推迟实例化技术会在应用的整个使用过程中导致少许——通常不那么明显——的延迟,但与长时间的启动延迟相比,它还是可接受的。推迟实例化的另一个好处在于内存使用的优化。

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

查看英文原文: Top 5 Ways to Reduce Flex Application Startup Time

2008-05-31 21:051457
用户头像

发布了 88 篇内容, 共 272.8 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

正规合肥等保测评机构名单汇总2025

行云管家

网络安全 等保 等保测评

全能电子书阅读管理工具 OmniReader Pro for Mac

兮兮立立

EdgeView for Mac 图片浏览查看编辑软件

兮兮立立

文件快捷拖放管理工具Dropzone 4 for Mac

兮兮立立

【华为云MySQL技术专栏】TaurusDB增备功能介绍

华为云开发者联盟

如何配置YashanDB连接池以提升应用响应速度

数据库砖家

音频元数据编辑器Tagr for Mac v5.8.1

兮兮立立

Tagr下载 Tagr mac Tagr破解版

原点安全入选中国信通院《数字安全护航技术能力全景图》多个细分领域

原点安全

数据安全 中国信通院 数据安全平台

深刻理解数据库安全防范的意义以及措施

行云管家

数据安全 数据库安全

Dynamic Wallpaper for Mac 精美动态壁纸下载器

兮兮立立

MacCleanse for Mac 系统垃圾清理软件

兮兮立立

怎样做YashanDB数据库容量规划技巧

数据库砖家

Open WebUI 和 Dify 在构建企业AI应用时的主要区别

测试人

表单文本框里写太多字就出 404 了?原因和解决办法都在这儿!

不在线第一只蜗牛

表单

Kimi K2开源炸场,1万亿参数碾压GPT-4.1,成本仅Claude 4的1/5!

测试人

Mac系统设置维护工具TinkerTool System for Mac

兮兮立立

Docker容器访问挂载文件权限问题

电子尖叫食人鱼

Docker 容器 运维

WiFi无线网络管理工具 WiFi Explorer Pro for Mac

兮兮立立

揭秘 JVM 停顿的背后:深入理解 Safepoint

mazhen

Java Linux JVM GC Performance

妙笔写作软件WonderPen for Mac v2.6.9

兮兮立立

WonderPen妙笔 WonderPen下载 WonderPen中文版 WonderPen激活版

低代码:深度切入制造业软件系统需求的实践路径

秃头小帅oi

MySQL 逻辑架构说明

量贩潮汐·WholesaleTide

MySQL

如何进行YashanDB数据库的批量导入导出数据操作

数据库砖家

为什么说普通人想要从新一轮 Web3 市场红利受益,就一定要PSP?

股市老人

视频画质无损修复软件Aiarty Video Enhancer for Mac

兮兮立立

内网即时通讯软件BeeWorks,支持私有化局域网使用

BeeWorks

即时通讯 IM 私有化部署

怎样做YashanDB数据库日志分析提升系统稳定性

数据库砖家

和鲸助力!华中附属同济医院DataLab数据服务一体化平台荣获第7届医学创新大会数智化医学创新典型案例

ModelWhale

同济医院 和鲸 CMIA

从接入到销毁:可信数据空间如何为医疗数据合规护航?

郑州埃文科技

数据要素 可信数据

回归开源,两位 Java 和 Go 程序员分享的开源贡献指引

阿里巴巴云原生

阿里云 云原生 Higress

订单初版—支付和履约实现的重构文档

电子尖叫食人鱼

架构

加快Flex应用启动速度的5种方式_Java_Jon Rose_InfoQ精选文章