【張龍】加快Flex應用啟動速度的5種方式

iDotNetSpace發表於2008-06-04

Jun Heider在O’Reilly的InsideRIA站點上發表了一篇精彩的文章,該文章就如何加快Flex應用的啟動速度提出了很多建議,以幫助使用者減少看見討厭的“Loading”對話方塊的出現時間。他深入探討了問題的不同方面,並對每種技術的優勢和劣勢進行了評判。

  1. 從外部載入媒體(Media)
    Heider提到了一個常用的Flex最佳實踐——限制嵌入到應用/SWF檔案中的媒體的數量,如影像、影片及mp3等資源都可以從外部的SWF檔案載入。

    Flex框架可以直接將圖片、mp3及字型等資源編譯到SWF中。當你想讓終端使用者獲得全部資源時,這種方式確實能派上用場,但是這會導致你的應用長時間停留在“Loading”階段。 

  2. 在嵌入式字型中限制字符集
    Heider建議在嵌入式字型中限制字符集以降低SWF檔案的總下載時間:
    當你在Flex中嵌入一種字型時,你就會獲得該字型的全部字元的支援。儘管這可能是你想要的,但你確信你需要全部字元麼?例如,在一個只面向英文的應用中,你確信你真的想花時間下載中文字元資料麼?
  3. 快取框架

            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也沒有任何影響。
  4. 考慮模組化 Heider談到了將Flex應用劃分成模組的好處:
    減少字型載入時間的另一種方式就是將你的Flex應用劃分成模組。使用模組的一個好處在於當載入和解除安裝模組時你能完全操控它。

    ...

    之所以要劃分成模組的最後一個原因是他們更快,而且我能即時載入它們。換句話說,在啟動時唯一需要載入的模組就是 Step1.swf模組。因此,在使用模組的情況下,終端使用者節省了啟動時間,但是當他從一個模組切換到另一個模組時卻需要花更多時間,因為每個模組都需要以JIT形式載入。在我的應用中,只有當使用者首次在steps 1-5之間切換時需要花更多時間。
  5. 推遲例項化

            Heider圍繞著Flex元件的“creationPolicy”屬性及何時例項化應用的不同部分給出了很多建議。

    如果你想減少從資料下載到使用者真正可以使用的總時間,當務之急就是推遲例項化。這項技術背後的理念就是直到應用真正使用的時候才在記憶體中建立物件。

    儘管推遲例項化技術會在應用的整個使用過程中導致少許——通常不那麼明顯——的延遲,但與長時間的啟動延遲相比,它還是可接受的。推遲例項化的另一個好處在於記憶體使用的優化。

Heider還談到了一個“實驗性”的條款——“使用流”,這是他在討論Dirk Eismann的帖子(Building monolithic Flex SWFs that still startup quickly.”)時談及的。Eismann提出一項技術以利用Flash Player中的多個frames以在部分應用中達到流的目的。檢視所有的帖子以更多地瞭解該技術及關於加快Flex啟動速度的建議。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-331161/,如需轉載,請註明出處,否則將追究法律責任。

相關文章