2011-07-11 101 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代碼,它非常重量級。