2011-07-11 61 views
1

如果我理解正确 - 客户端的Flash和Flex的主要区别在于Flex需要加载Flex的其他文件才能工作。Flex和Flash之间的大小差异?

是这种情况,如果是这样的话,与Flash应用程序相比,Flex会加载多少数据?

谢谢!

回答

2

由于所添加的框架,Flex实际上是作为结果biger文件进行编译而不是Flash。

关于差异 - 它会有所不同,具体取决于您在项目中使用过的实际库。

无论如何 - 我认为柔性框架的质量应该考虑文件大小。 这个差异通常是对于一个严重项目的2x biger文件大小(当我们谈论文件大小时通常不会超过几kb),但是我会交换更大的大小以获得更高的质量和编程时间支出即使是一个简单的任务。

关于加载其他文件。 有3种方法由Flash Builder(Flex)提供,您可以使用它们。 例如,如果您选择“框架链接”为“合并到代码” - 不会加载任何外部库,所有内容都应嵌入到结果文件中。 如果您选择“框架链接”为“运行时共享库​​(RSL)”,则会从您的服务器加载库。无论如何 - 考虑到这种方法会导致非常小的文件大小,并且只会从外部源加载一次库,下次加载文件时 - 不会加载任何外部库(如果您的文件没有任何更改框架我的意思是)。

0

由Flex编译器创建的Flash影片不会加载任何“附加文件”,以便由某个Flash Player加载。

尽管原始形式的问题是关于在客户端加载文件的问题,但我想我们可以扩展Flex与Flash的比较。 Flex应用程序就是这样,应用程序,所以是最小的Flex swf总是比最小的Flash swf大。它们并不相同,因此除了观察两者如何是两个不同的东西之外,没有什么价值。

+0

嗯,我想他意味着像framework.swc,rpc.swc等框架文件被编译到flex swf电影中或导出到rsls,然后在运行时由flex应用程序加载。因此,与纯Flash应用程序相比,当涉及到swf大小和所需的库时,会产生开销。 –

+0

我想OP可能意味着,但严格来说它比这更复杂,因为这些“文件”不是直接“嵌入”或“编译”,只有部分实际上最终在最终.swf – 2011-07-11 10:04:33

1

Flex带来的开销很大。你可以做这个实验:在Flash Builder中创建一个空的项目,然后在Flash CS5中编译它。

Flex项目是1024 KB。该应用程序本身进来了41 KB,其余大部分在Flex框架,Spark框架和文本布局库。 (结果肯定是不同的基于你带来的库)

Flash项目是4千字节。

但是,这是没有理由避免Flex。请记住,这些库(SWC)已被缓存。每个项目只需加载一次。

此外,更重要的是,Flex项目不打算成为网站。它们不是嵌入在您的网站中的小型Flash影片。它们是成熟的应用程序。它们倾向于与数据密切相关的业务线应用程序。作为一个应用程序框架,我不反对1 MB大小的开销。我无法在Flash中轻松或高效地在Flex中做什么。从这个角度来看,Flash和Flex是用于不同工作的不同工具。

换句话说,对于我雇用Flex的客户,他们从未抱怨过下载的大小。这并不是他们在应用程序解决方案的环境/需求中所关心的。但是,如果我选择了Flex作为错误的目的,我预计这个故事会有所不同。

0

Flex 3引入了“框架RSL”功能,允许Flex框架与主应用程序SWF分开加载。这导致在整个Flex应用程序大小显著减少:

http://ted.onflash.org/2007/06/flex-3-thursday-dramatically-smaller.php

的另一个好处的RSL架构已签名的Flex框架的RSL(.SWZ文件)存储在Flash的特殊专用高速缓存播放器。这意味着,您第一次使用给定版本的框架运行Flex应用程序时,Flash Player将从Adobe CDN下载SWZ文件并将其存储在缓存中。下一次使用相同版本的框架加载任意 Flex应用程序时,FP将简单地加载本地缓存中已存在的内容。

从版本4.x开始,MXML编译器的默认行为是生成使用框架RSL的应用程序。更多信息,请访问:

http://livedocs.adobe.com/flex/3/html/help.html?content=rsl_09.html

之所以这么说,Flex应用程序很可能至少比他们的Flash略大“等价物”。如果在编译器上使用“-keep”选项,则可以看到MXMLC编译器生成的ActionScript代码,它非常重量级。