約 20 を超えるメイン ビューとフォームを備えた非常に巨大なアプリケーションをセットアップする必要があります。メインビューには少なくとも 1 つのグリッドが含まれますが、最大 10 のグリッドを含めることができます。Portal-Panel を含むいくつかのメインビューもあります。
> 20ではなく1つだけでテストしたので、メインビューが開くまでにかなりの時間がかかるようになりました。アプリケーションは、Borderlayout のコンテナーを保持するフィット レイアウトの Viewport 内に配置されます。Mainview は常に中央にレンダリングされ、他の領域はナビゲーションに使用されます。
タブパネル内で物事をキャッシュする私の最初のアプローチ
私の最初のアプローチは、非表示のタブを持つタブ パネルを使用することでした。MixedCollection
それと並行して、ビューがすでにタブパネルに挿入されているか、作成する必要がある場合にルックアップを行う場所を管理します。既に挿入されている場合は、MixedCollection から位置をフェッチし、setActiveTab()
. しかし、新しいメインビューを挿入したり、setActiveTab() を使用して既存のメインビューをアクティブにしたりするのに同じ時間がかかるため、価値がないように思えます。
では、私が間違っていることは何ですか?どうすればこれを改善できますか?
編集
問題はレンダリング時間にあるようで、setActiveTab() が使用されるたびにコンポーネントが再レンダリングされるようです。ビューを中央パネルにレンダリングするには、最大 2 ~ 3 秒かかります。したがって、レンダリングとサイズ変更を行う必要がないように、既に作成されたビューをキャッシュすることで高速化できると考えました。北部地域ではメニューも毎回レンダリングされることを言及する必要があると思いますが、これはキャッシュされませんが、それは問題ではありませんね。
ビューの切り替え方法
メニュービューとメインビューの変更を管理する追加のコントローラーがあります。そのため、メニューがコンテナーから削除され、新しいメニューが追加されます。ビューが既に作成されている場合は、メインビューの場合、前述の混合コレクションでルックアップが行われ、その場合はタブインデックスが受信され、タブアクティブ化されました。そうでない場合、ビューは新しいタブとして追加され、その後、ident と index と共に混合コレクションに追加されます。