技術の最前線はFlexクライアントキャッシュ技術がどのように使用するかを見ます


本稿では、Flexクライアントキャッシュmoduleswfの使用に重点を置き、FlexはRSLテクノロジーを使用し、フレームワークのキャッシュと共有を解決し、ロードの問題を大きく解決しました.
Flexクライアントキャッシュmoduleswf
FlashまたはFlexクライアントのキャッシュは、ブラウザのキャッシュではなく、ブラウザのキャッシュが一定時間後に期限切れになることを先に宣言します.Flexまたはflashを使用して開発されたサイトの最大の問題は、swfファイルが大きすぎて、国内のネットワーク速度が限られているため、ロード時間が長すぎて、多くの潜在的な顧客を失うことです.
FlexはRSLテクノロジーを使用して、フレームワークのキャッシュと共有を解決し、ロードの問題を大きく解決します.しかし、プロジェクトが大きすぎると、ロード時間が長くなるという問題があります.SharedObjectを使用して、クライアントのSWFとModuleのキャッシュを行い、バージョン管理を行いました.サーバ側でプロファイルを作成し、Flexクライアントがデータをキャッシュした場合、バージョン管理を行い、クライアントデータがサーバ側データと同じになるようにする.例:現在Applicationの項目があると仮定して生成するApplication.swfファイルは2028 K,クライアントのダウンロード速度は100 k/sであり,20秒の時間はそれほどかからない.アプリケーションのソースコードの一部を抽出し、Moduleメカニズムを使用してアプリケーションに変更します.swf428K,Module1.swf1000K,Module2.swf600K.キャッシュを使用しないと、完全なアプリケーションのロードが完了するまで20秒もかかりません.キャッシュを使用するとModule 1になります.swfとModule 2.swfがクライアントにキャッシュする場合は、Applicationをロードするだけでよい.swfの428 Kは、4秒の差がなく、Moduleの読み取り2秒の時間を加えると、最大6-7秒の時間になる.効率が明らかだ.また、他のめちゃくちゃなもの、例えば皮膚をキャッシュすることもできる.swf,画像リソース.swfなどジャンプページがあればApplication.swfもキャッシュします.
質問:
Flexクライアントキャッシュが許可されていない場合は、キャッシュをスキップし、プログラムのロードと実行に支障をきたさない.1人のユーザが,何度も本サイトを開くと,本サイトに一定の興味があることを示し,キャッシュを許可するかどうかを何度も尋ねられた後,クリック許可の可能性も高まった.ユーザがキャッシュの利点を明確に知ることができる場合、キャッシュを許可する.ユーザー体験を加速させることができる.サーバーの圧力を下げることができます.サーバ帯域幅の使用を低減できます.記事の最後にDemoがダウンロードテストに使用され、ソースコードは一時的にSWCにパッケージされ、オープンしていません.次に、WarmCの使用方法について説明する.swc:プロファイル’Cache_config.xml’

  
  
  
  
  1. <dataiddataid="moduleOne"version="beta01"/> 
  2.  <dataiddataid="moduleTwo"version="beta01"/> 
  3.  <dataiddataid="mySwf"version="beta01"/> 

◆もちろん、プロファイルのパスと名前はあなたが自由に取ることができますが、バージョン管理時にパスを指定する必要があります.次に、バージョン管理◆id属性を起動する方法を説明します.このキャッシュの名前をマークすると、キャッシュされたSharedObject名やバージョン制御を含むグローバルで使用されます.次に、キャッシュを読み込むときにこのid◆versionバージョン制御が使用されます.あなたの名前に従います.ただし、以前のバージョンと混同されないように、増分されたバージョン名を使用することを推奨します.まず、キャッシュの使用前にバージョン管理を開始する必要があります.次のパッケージをインポートする必要があります.

  
  
  
  
  1. importWarmC.Cache.LocationDataProxy; 

次に、バージョン管理を開始します.
LocationDataProxy.getInstance().CacheReBuild(0.5);CacheReBuild(size:int,configUrl:String)メソッド使用説明:◆sizeパラメータ、キャッシュの合計サイズを指定します.単位はメガ(M)です.入力しないとデフォルトは1 Mです.この場所で実行されると、クライアントのSharedObjectがキャッシュサイズを許可していると判断し、キャッシュの最大値設定を変更するようユーザーに要求します.キャッシュするデータが大きい場合は、以下の値size<=0に対応してヒントを与えないか、デフォルトクライアントの100 Kb 01<=size<10キャッシュ10 Mb以内のデータ10<=sizeキャッシュ無限大のデータを取ることができます.例えば、キャッシュする必要があるファイルの総サイズは700 Kで、size=0.7を設定することができます.これにより、起動バージョン管理でユーザーに質問することができます.また、ユーザーがキャッシュに同意した後に◆configUrlに再度問い合わせないことを保証します.プロファイルXMLアドレスを指し、デフォルトはルートディレクトリ'Cache_です.config.xml'は、指定する必要があり、プロファイルのフォーマットはDemoフォーマットと一致する必要があります◆プロファイルが正しい場合、バージョン管理が正常に起動し、サーバ側の構成が読み込まれ、Flexクライアントキャッシュとバージョン比較されます.バージョンが異なる場合は、Flexクライアントキャッシュを削除します.バージョン管理の起動に失敗すると、クライアントのキャッシュとサーバ側のキャッシュが同期できなくなります.
キャッシュ人間化機能の設定
LocationDataProxy.getInstance().Warm_Human(true);Warm_Human(bool:Boolean)説明:◆FlashPlayerのSharedObjectは、クライアントの設定サイズを超えるとユーザーに提示され、Webサイトのキャッシュに同意するかどうか◆システムが複数のデータをキャッシュする必要がある場合、ユーザーがキャッシュを拒否した場合、SharedObjectに書き込む必要があるたびにキャッシュを許可するかどうかを尋ねる.このようなユーザー体験は非常に悪い.◆Warm_を設定するとHumaがtrueの場合、初めてユーザにプログラムキャッシュのサイズ変更を許可するかどうかを提示した後、ユーザが拒否した場合、以降のキャッシュは提示されず、Flexクライアントでキャッシュされることもなく、ユーザが再びこのプログラムを実行するまで(、少し煩わしいが、面倒で、多くの人はその数Mの空間を気にせず、許可を注文した)◆false、ユーザが拒否するかどうかにかかわらず、キャッシュ領域を大きくするたびに、◆このメソッドを使用しないでください.デフォルトはtrueです.だからこの方法はめったに使われません.バージョン管理の起動に成功した後、moduleロードが可能であることを確認し、次のパッケージをインポートします.

  
  
  
  
  1. importWarmC.Cache.ModuleCacheProxy; 

moduleのロード

  
  
  
  
  1. ModuleCacheProxy.getInstance().load("moduleOne","ModuleOne.swf",onProgress,onReady);  
  2. functiononProgress(bytesLoaded:uint,bytesTotal:uint):void{  
  3.  trace("> ModuleOne:"+bytesLoaded+"/"+bytesTotal);  
  4. }  
  5. functiononReady(data:Object):void{  
  6.  trace(">ModuleOne !");  
  7.  Application.application.addChild(dataasUIComponent);  
  8. }  

◆load(name:String,url:String,onProgress:Function,onReady:Function)説明:◆name、ModuleのプロファイルCache_configファイルのIDです.ここではプロファイルと一致する必要があります.バージョン管理、クライアントのキャッシュファイル名に使用され、名前でSharedObject◆urlを取得します.ModuleのSwfファイルパスを指します.DemoのModuleファイルはルートディレクトリにありますので、名前◆onProgressを直接指定します.Moduleをロードするときの進捗コールバック方法を指します.2つのパラメータを返します.bytesLoadedとbytesTotal、進捗バーを表示する必要がある場合は、この方法は必須です.キャッシュが存在しない場合、bytesLoadedとbytesTotalはサーバ側からデータをロードする値になります.キャッシュが既に存在する場合、このメソッドは1回のみ呼び出され、2つのコールバックパラメータはいずれも100◆onReadyであり、ロード完了後のコールバックメソッドを指し、1つのUIcomponentタイプのパラメータdata◆エージェントが餓漢単例モードを使用してmoduleがクライアントにキャッシュされているかどうかを検出する.◆クライアントにキャッシュされている場合は、◆そうでない場合は、サーバ側からロードし、表示し、クライアントにキャッシュし、バージョンを打つ.
◆SWF(module以外)をロードし、以下のパッケージをインポートする必要があります.

  
  
  
  
  1. importWarmC.Cache.SwfCacheProxy; 

SWFのロード:

  
  
  
  
  1. SwfCacheProxy.getInstance().load("mySwf","test.swf",onProgress,onReady);  
  2. functiononProgress(bytesLoaded:uint,bytesTotal:uint):void{  
  3.  trace("> SWF:"+bytesLoaded+"/"+bytesTotal);  
  4. }  
  5. functiononReady(data:Object):void{  
  6.  trace(">SWF !");  
  7.  varload:Loader=newLoader()  
  8.  load.loadBytes(dataasByteArray);  
  9.  varuic:UIComponent=newUIComponent();  
  10.  uic.addChild(load);  
  11.  Application.application.addChild(uic);  

◆load(name:String,url:String,onProgress:Function,onReady:Function)説明:◆属性作用はModuleCacheProxyと同様◆唯一異なる点であり、onReadyメソッドの返信パラメータはByteArrayであり、自分で包装する必要がある現在使用されている.SwfCacheProxyを使用して皮膚Styleをキャッシュすることができます.swf、ゲームプラグイン、画像リソースなどのSwfデータ.例では、「Module 2のロード」があります.

  
  
  
  
  1. privatefunctionloadModule2():void{  
  2.  ModuleCacheProxy.getInstance().load("moduleTwo","ModuleTwo.swf",onProgress,onReady);  
  3.  ModuleCacheProxy.getInstance().load("moduleTwo","ModuleTwo.swf",onProgress,onReady);  
  4.  functiononProgress(bytesLoaded:uint,bytesTotal:uint):void{  
  5.   trace("> ModuleTwo:"+bytesLoaded+"/"+bytesTotal);  
  6.  }  
  7.  functiononReady(data:Object):void{  
  8.   trace(">ModuleTwo !");  
  9.  Application.application.addChild(dataasUIComponent);  
  10.  }  
  11. }  

気をつけてねswfはModuleCacheProxyを使用して2回ロードした.はい、これはプレゼンテーションのためです.swfがまだロードされていない場合、もう一度ロードすると拒否されます.一度に1つのSWFを複数回ロードしたい場合(Copy複数のSwfとも言えます)、拒否され、1つずつゆっくりロードしてonReadyメソッドにロードすることができます.あるいは、ロードを使わずに、直接コピーを使って、どのようにコピーして、自分でgoogleに行くことができます.これにより、キャッシュをロードするときにキャッシュが詰まっていることを避けることができます.
転載は明記してください:FlexHomeの原文のリンクから出ます:http://Flex.desizen.com/Flex-client-cache/