写点什么

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

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

关注

评论

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

借助 NGINX 对本地的 Kubernetes 服务进行自动化的 TCP 负载均衡

NGINX开源社区

nginx 开源 Kubernetes NGINX Ingress Controller nginx 开源版

人工智能与语音识别:技术进步与应用前景

天津汇柏科技有限公司

语音识别 人工智能’

火山引擎ByteHouse发布高性能全文检索引擎

字节跳动数据平台

数据库 大数据 云原生 Clickhouse 数仓

苏宁商品详情数据接口(suning.item_get)丨苏宁API接口

tbapi

苏宁API 苏宁商品详情接口

开山网商品详情数据接口(K3.item_get)丨开山网API接口

tbapi

开山网 开山网商品详情接口 开山网 API接口

deepin V23成功适配奕斯伟计算EIC7700X,RISC-V桌面生态发展再提速

nn-30

Linux 开源 操作系统 risc-v deepin

Aloudata 入选 Gartner 中国代表性数据基础设施供应商列表

Aloudata

数据 Gartner 数据管理 数据基础设施

观测云:数据驱动决策的智能分析平台

可观测技术

最全数据识别标准汇编,你应该需要!(附下载)

极盾科技

数据安全

小智常见报表示例--层次坐标--跨层累计报表

小智数据

小智报表 小智开源报表 跨层累计报表 小智常见报表示例

【YashanDB知识库】virt虚拟内存远大于res内存问题分析

YashanDB

yashandb 崖山数据库 崖山DB

小智常见报表示例--层次坐标--交叉表累计报表

小智数据

自定义报表打印控件 小智开源报表 交叉表累计报表 小智BI 小智报表常见示例

如何打造高效、安全、协同的指标管理体系?袋鼠云是这样做的

袋鼠云数栈

大数据 指标体系 指标管理 指标中台 指标建设

小智常见报表示例--层次坐标--组内占比报表

小智数据

自定义报表控件 小智开源报表 小智BI 报表打印 组内占比报表

观测云:多云监控的高效解决方案

可观测技术

微软研究人员推出SpreadsheetLLM!旨在理解和处理电子表格;“神农大模型 2.0”正式发布!|AI日报

可信AI进展

人工智能

哪些基于 LLMs 的产品值得开发?从用户体验和市场接受度的角度探讨

Baihai IDP

产品 AI 白海科技 企业号 7 月 PK 榜 GenAI

实践分享:小程序插件引入详细教程

FN0

小程序 小程序化

蓝亚盒子迁移上云,华为云助力开启元宇宙直播电商新纪元

华为云开发者联盟

云原生 华为云 元宇宙 华为云开发者联盟

拼多多商品详情数据接口全解析:获取商品信息的高效途径

tbapi

拼多多 拼多多API接口 拼多多商品详情数据接口

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS xFusion (超聚变) 定制版

sysin

esxi OEM BIOS unlocker

天池AI大模型技术提升营火热上线,四重好礼等你来拿!

阿里云天池

AI

Easysearch 新特性:写入限流功能介绍

极限实验室

征文活动 easysearch 极限科技 写入限流

2024年苏州服务器托管有哪些机房选择?IDC选择方案

苏州服务器托管

数据中心 服务器托管

你喜欢刚刚公布的Scrum联盟系列认证新徽章吗?

ShineScrum

软件测试学习笔记丨Web浏览器控制

测试人

软件测试

微软最新WiFi远程代码执行漏洞(CVE-2024-30078)探究

阿里技术

微软 漏洞 WiFi远程代码 更新中 30078

公开课 | 软件测试简历书写、职业规划及面试的必备技能

测试人

软件测试

deepin 社区月报 | 2024年6月,deepin V23 RC2发布,还有多款应用更新!

nn-30

Linux 开源 操作系统 社区 deepin

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