硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

加快 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:051444
用户头像

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

关注

评论

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

隔壁工程师都馋哭了我的逆向工程IDA,说要给我搓背捏脚

网络安全学海

网络安全 信息安全 渗透测试 漏洞分析 逆向工程

图像直方图反向投影,Python OpenCV 取经之旅第 28 天

梦想橡皮擦

7月日更

Hive 原理实践

云祁

大数据 hive 7月日更

网络攻防学习笔记 Day69

穿过生命散发芬芳

网络攻防 7月日更

突破AI工业化瓶颈,专业数据服务平台化是关键

澳鹏Appen

人工智能 机器学习 数据标注 训练数据 标注平台

爱奇艺多语言台词机器翻译技术实践

爱奇艺技术产品团队

机器翻译 nlp 模型 BERT

Ubuntu Server 20.04搭建zookeeper集群

玏佾

zookeeper 群集安装 搭建 zk 集群部署

GIS可视化框架:更便捷的地图数据可视化工具

鲸品堂

GIS 可视化 应用场景

通过Linux实现更好的即时通讯传递

BeeWorks

阅读

Demo

Command

#架构实战营

百度程序员推荐的书籍,今天免费送!

百度Geek说

爱奇艺奇秀直播的秒播体验优化实践

爱奇艺技术产品团队

直播 优化

为什么公司应该效仿开源的文化

BeeWorks

Hive窗口函数保姆级教程

五分钟学大数据

hive 7月日更

hive的安装部署

大数据技术指南

hive 7月日更

pha挖矿系统源码开发

获客I3O6O643Z97

区块链+ PHA矿机挖矿 PHA质押挖矿

第一周作业-对比不同公司产品招聘JD

小夏

产品经理训练营 邱岳

模块八 - 设计消息队列存储消息数据的 MySQL 表格

华仔架构训练营

Linkflow CDP亮相GDMS全球数字营销峰会

Linkflow

CDP 用户画像 数字营销

如何科学地系统地梳理出CDP的RFP?

Linkflow

2021年度“CCF-百度松果基金” 百度携手CCF为AI科研提供资金支持

百度大脑

人工智能 百度 松果基金

2021世界人工智能大会开幕 百度飞桨荣获“SAIL之星”奖项

百度大脑

人工智能 飞桨

对象存储手把手教二 | Bucket 跨区域容灾和用户数据复制

QingStor分布式存储

云原生 对象存储 分布式存储 云存储

自建开发工具系列-Webkit内存动量监控UI(一)

Tim

FrontEnd 调试工具 Webkit 工具UI

边界防御·信息安全保密圈的 “丈八蛇矛”

郑州埃文科技

深入浅出 Gitalk 留言插件

悟空聊架构

开源 网站 7月日更 网站建设 留言

bzz分币挖矿系统开发需求

获客I3O6O643Z97

区块链+ BZZ节点矿池 BZZ节点挖矿

平安社区建设,潍坊智慧平安社区建设解决方案

生命科学领域新工具:北鲲云超算平台,梦启航的地方

北鲲云

从零开始学习3D可视化之摄像机

ThingJS数字孪生引擎

大前端 可视化 数字孪生

《面试八股文》之kafka21卷

moon聊技术

kafka 面试

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