0

私は GWT でアプリを作成していますが、最近コード分割を実装しました。アプリケーションのサイズを 1.1MB から 570kB に減らしたので、アプリケーションの起動時間が速くなりました (私たちは 500kB が本当に重要な特別なサーバーを使用しています...私の質問には重要ではありません...)。アプリケーションの起動後 (つまり、ユーザーはログイン ページを表示し、ログインしてアプリの基本部分を使用できます)、残りのフラグメントをダウンロードしたいと思います。

フラグメント内のコードが必要なときにフラグメントがダウンロードされることはわかっています。しかし、フラグメントの 1 つは約 300kB です。そのため、アプリのメニューでアイテムをクリックすると、このフラグメントがダウンロードされ、ユーザーが応答を受け取るまでに非常に顕著な遅延 (1 - 2 秒) が発生します。

これはおそらく一度だけ発生する可能性が高く、フラグメントは1年ほどキャッシュされるため、次回はより速くロードされることがわかりました. ただし、たとえば、別のデバイスでもう一度試すと、フラグメントを初めてダウンロードする必要があります。

ユーザーがwifiを使用して電話/タブレットでアプリを起動した後、wifiから切断するか、その範囲外に出た場合でも、フラグメントでコードを起動できることを確認する必要があります。彼がまだサーバーに接続している間は、それらをダウンロードする原因となるものを起動しないでください。

今では、すべてのフラグメントをダウンロードするために 3 つのメニュー項目を開く必要があり、面倒です。

つまり
、最初のダウンロードは 570kB のままにし、アプリの残りの部分をできるだけ早くバックグラウンドで (可能であれば) ダウンロードしたいと考えています。

編集: http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html#sequenceを見つけたので、最初の読み込みシーケンスを設定できるので、探しているものだと思います。ただし、フラグメントがダウンロードされた後にログイン画面が表示されるため、非同期でロードされるかどうかはわかりません。

4

1 に答える 1

1

ログイン パネルがレンダリングされた後、すべてのフラグメントがダウンロードされるようにすることができます。残りのコード内で何らかのメソッドを呼び出すだけです。目に見えることを行う必要はありません。

また、この方法ですべてのコードをロードする場合は、1 つのフラグメント (ログイン パネルのエントリ ポイント) を分割するだけで済みます。各分割ポイントにより、(a) アプリケーション全体のサイズがわずかに増加し、(b) 最初のフラグメントを表示するためにロードする必要がある残りのフラグメントのサイズが、場合によっては大幅に増加します。したがって、要件を考えると、最初のフラグメントとアプリの残りの部分以上のものを用意しても意味がありません。

于 2016-09-13T15:45:45.830 に答える