5種方式加快(kuài)FLEX速度
2009-05-12
1106
小小貝,小小貝,小小貝,小小貝,小小貝,小小貝,小小貝,小小貝,小小貝,小小貝,小小貝,小小貝,小小貝,小小貝

1. 從(cóng)外部加載媒體(tǐ)(Media)

Heider提到了一個常用的Flex最佳實踐——限制嵌入到應用/SWF文件(jiàn)中的媒體(tǐ)的數量,如(rú)圖像、影(yǐng)片及mp3等資源都(dōu)可(kě)以從(cóng)外部的SWF文件(jiàn)加載。

Flex框架可(kě)以直接将圖片、mp3及字體(tǐ)等資源編譯到SWF中。當你(nǐ)想讓最終用戶獲得(de)全部資源時,這種方式确實能派上用場,但(dàn)是這會導緻你(nǐ)的應用長時間停留在“Loading”階段。

2. 在嵌入式字體(tǐ)中限制字符集

Heider建議(yì)在嵌入式字體(tǐ)中限制字符集以降低SWF文件(jiàn)的總下載時間:

當你(nǐ)在Flex中嵌入一種字體(tǐ)時,你(nǐ)就(jiù)會獲得(de)該字體(tǐ)的全部字符的支持。盡管這可(kě)能是你(nǐ)想要的,但(dàn)你(nǐ)确信你(nǐ)需要全部字符麽?例如(rú),在一個隻面向英文的應用中,你(nǐ)确信你(nǐ)真的想花時間下載中文字符數據麽?

3. 緩存框架

Heider回顧了Flex 3 support for runtime-shared-libraries (RSL)這篇文章(zhāng):

從(cóng)Flex 3開始,你(nǐ)可(kě)以将Adobe簽名的框架——RSLs緩存到Flash Player的cache中。這有兩個好處。首先,緩存在Flash Player cache中的簽名的框架RSLs可(kě)由所有配置好的Flex應用共享。換句話(huà)說(shuō),如(rú)果某人(rén)的應用已經下載了500k的簽名的框架RSL,并且該RSL仍舊在Flash Player cache中,那麽你(nǐ)的應用就(jiù)可(kě)以使用緩存下來(lái)的RSL。其次,即使某人(rén)清空了其浏覽器緩存,對Flash Player cache也沒有任何影(yǐng)響。

4. 考慮模塊化 Heider談到了将Flex應用劃分(fēn)成模塊的好處:

減少字體(tǐ)加載時間的另一種方式就(jiù)是将你(nǐ)的Flex應用劃分(fēn)成模塊。使用模塊的一個好處在于當加載和卸載模塊時你(nǐ)能完全操控它。 …

之所以要劃分(fēn)成模塊的最後一個原因是他(tā)們更快(kuài),而且我能即時加載它們。換句話(huà)說(shuō),在啓動時唯一需要加載的模塊就(jiù)是 Step1.swf模塊。因此,在使用模塊的情況下,最終用戶節省了啓動時間,但(dàn)是當他(tā)從(cóng)一個模塊切換到另一個模塊時卻需要花更多時間,因爲每個模塊都(dōu)需要以JIT形式加載。在我的應用中,隻有當用戶首次在steps 1-5之間切換時需要花更多時間。

5. 推遲實例化

Heider圍繞着Flex組件(jiàn)的“creationPolicy”屬性及何時實例化應用的不同部分(fēn)給出了很多建議(yì)。

如(rú)果你(nǐ)想減少從(cóng)數據下載到用戶真正可(kě)以使用的總時間,當務之急就(jiù)是推遲實例化。這項技術(shù)背後的理(lǐ)念就(jiù)是直到應用真正使用的時候才在内存中創建對象。

盡管推遲實例化技術(shù)會在應用的整個使用過程中導緻少許——通常不那麽明顯——的延遲,但(dàn)與長時間的啓動延遲相(xiàng)比,它還(hái)是可(kě)接受的。推遲實例化的另一個好處在于内存使用的優化。

 

關鍵字:5種方式加快(kuài)FLEX速度,FLEX速度提升方法