五大方法實現(xiàn)Flex性能優(yōu)化
本文向大家簡單介紹一下Flex性能優(yōu)化常用手法,眾所周知,目前國內(nèi)的寬帶應(yīng)用并不是像很多發(fā)達國家發(fā)達,個人應(yīng)用帶寬基本上都是2M以下的,怎么樣能夠使你的Flex應(yīng)用能夠流暢的運行在客戶端的問題,成為了制約每個Flex應(yīng)用開發(fā)程序員的大難題。
Flex性能優(yōu)化常用手法總結(jié)
在這里,我收集整理了一下網(wǎng)絡(luò)上關(guān)于這方面經(jīng)驗,歡迎大家補充。
Flex性能優(yōu)化基本原則:
1.從外部加載媒體(Media)
Heider提到了一個常用的Flex***實踐——限制嵌入到應(yīng)用/SWF文件中的媒體的數(shù)量,如圖像、影片及mp3等資源都可以從外部的SWF文件加載。
Flex框架可以直接將圖片、mp3及字體等資源編譯到SWF中。當(dāng)你想讓最終用戶獲得全部資源時,這種方式確實能派上用場,但是這會導(dǎo)致你的應(yīng)用長時間停留在“Loading”階段。
2.在嵌入式字體中限制字符集
Heider建議在嵌入式字體中限制字符集以降低SWF文件的總下載時間:
當(dāng)你在Flex中嵌入一種字體時,你就會獲得該字體的全部字符的支持。盡管這可能是你想要的,但你確信你需要全部字符么?例如,在一個只面向英文的應(yīng)用中,你確信你真的想花時間下載中文字符數(shù)據(jù)么?
3.緩存框架
Heider回顧了Flex3supportforruntime-shared-libraries(RSL)這篇文章:
從Flex3開始,你可以將Adobe簽名的框架——RSLs緩存到FlashPlayer的cache中。這有兩個好處:首先,緩存在FlashPlayercache中的簽名的框架RSLs可由所有配置好的Flex應(yīng)用共享。換句話說,如果某人的應(yīng)用已經(jīng)下載了500k的簽名的框架RSL,并且該RSL仍舊在FlashPlayercache中,那么你的應(yīng)用就可以使用緩存下來的RSL。其次,即使某人清空了其瀏覽器緩存,對FlashPlayercache也沒有任何影響。
4.考慮模塊化
Heider談到了將Flex應(yīng)用劃分成模塊的好處:減少字體加載時間的另一種方式就是將你的Flex應(yīng)用劃分成模塊。使用模塊的一個好處在于當(dāng)加載和卸載模塊時你能完全操控它。
之所以要劃分成模塊的***一個原因是他們更快,而且我能即時加載它們,實現(xiàn)Flex性能優(yōu)化。換句話說,在啟動時唯一需要加載的模塊就是Step1.swf模塊。因此,在使用模塊的情況下,最終用戶節(jié)省了啟動時間,但是當(dāng)他從一個模塊切換到另一個模塊時卻需要花更多時間,因為每個模塊都需要以JIT形式加載。在我的應(yīng)用中,只有當(dāng)用戶***在steps1-5之間切換時需要花更多時間。
5.推遲實例化
Heider圍繞著Flex組件的“creationPolicy”屬性及何時實例化應(yīng)用的不同部分給出了很多Flex性能優(yōu)化建議。
如果你想減少從數(shù)據(jù)下載到用戶真正可以使用的總時間,當(dāng)務(wù)之急就是推遲實例化。這項技術(shù)背后的理念就是直到應(yīng)用真正使用的時候才在內(nèi)存中創(chuàng)建對象。
盡管推遲實例化技術(shù)會在應(yīng)用的整個使用過程中導(dǎo)致少許——通常不那么明顯——的延遲,但與長時間的啟動延遲相比,它還是可接受的。推遲實例化的另一個好處在于內(nèi)存使用的優(yōu)化。
以上Flex性能優(yōu)化原則來自JunHeider在O'Reilly的InsideRIA站點上發(fā)表了一篇精彩的文章,該文章就如何加快Flex應(yīng)用的啟動速度提出了很多建議,以幫助用戶減少看見討厭的“Loading”對話框的出現(xiàn)時間。他深入探討了問題的不同方面,并對每種技術(shù)的優(yōu)勢和劣勢進行了評判。Heider還談到了一個“實驗性”的條款——“使用流”,這是他在討論DirkEismann的帖子(BuildingmonolithicFlexSWFsthatstillstartupquickly.”)時談及的。Eismann提出一項技術(shù)以利用FlashPlayer中的多個frames以在部分應(yīng)用中達到流的目的。查看所有的帖子以更多地了解該技術(shù)及關(guān)于加快Flex啟動速度的建議。
【編輯推薦】
- Flex客戶端工程路徑規(guī)劃指導(dǎo)
- Flex開發(fā)者必須知道的10件事
- 技術(shù)前沿 看Flex客戶端緩存技術(shù)如何使用
- 12個Flex常用功能代碼再現(xiàn)
- 學(xué)習(xí)筆記 Flex國際化如何支持其他語言