天天看點

Flex3 framework RSL機制介紹

阻礙Flex應用的一個很大因素就是采用Flex架構的程式體積非常大。300-400K是很正常的大小了,對于目前的“寬”帶環境,客戶不得不忍受非常長的loading時間,極大的影響了使用者經驗。更讓人忍受不了的是,這幾百k的大小中,往往我們自己的程式代碼還占不到50K,其餘都是Flex的類庫代碼。從宏觀上看,每個flex應用都加載相同的類庫而不能互相共享是非常浪費的做法。

    還好,Adobe在最新的Flex3中加入了Framework RSL機制來解決這個問題,這也是Flex3的最大亮點之一。RSL全稱是Runtime Shared Library,即運作時共享庫。目前RSL主要有3個級别的,一個是Standard RSL(即一個網站内共享),一個是Cross-domain RSL(跨域共享),最後一個也是最關鍵的是Framework RSL(Flex架構共享)。這裡隻介紹Famework RSL,其餘的可以在幫助文檔中或者這裡檢視。

    Framework RSL是指Adobe官方為每一個版本的Flex制作一組RSL(目前版本包括3個RSL:framework RSL,data services RSL,data visualization RSL),同時為它們簽名。Flex開發者需要做的是使用Framework RSL選項編譯程式,你會發現你的程式體積會顯著減少,同時你還需要指定這些RSL的位址以及如果加載RSL出錯以後要加載的類庫位址。這樣,當一個使用者加載了任何一個使用此版本RSL的應用程式後,此版本RSL會被其緩存在flash player的cache中,并且這個cache不随着浏覽器緩存清空而清空,以後如果此使用者再次加載使用此版本RSL的程式的時候便不再需要加載此RSL,加載速度将大大提高。這裡需要注意的是,隻有9.0.115 以上版本的flash player 才支援Framework RSL, 是以填寫加載RSL出錯後要加載的類庫位址尤其重要,低版本的player會自動加載此類庫以讓程式正常執行。

    在檢視了這些RSL檔案(swz字尾名)後,發現一個問題,就是Framework RSL的體積相當客觀-_-!!!!。datavisualization 278K,framwork 526K, rpc 120K。最重要的framework RSL 居然有526K!對于player高版本的使用者而言還好,因為隻要加載一次。但是對于低版本的使用者而言則意味着每次都要加載後備類庫(類庫大小與RSL檔案大小相當,和RSL檔案在一個目錄下,以swf為字尾名),這樣的話,使用者每次加載的時間反而增加了(當然,浏覽器緩存能稍微幫些忙)。是以,現階段flash player 9.0.115普及率還很低的情況下是否使用Framework RSL還有待考量。

    以上是對Flex3 framework RSL機制的整體介紹,具體細節還是看幫助文檔或者線上文檔的這一章吧。

繼續閱讀