4

私はこの管理サイトに基づいてGWTおりSencha Ext GWT 2、問題があります。Firebugを使用すると、読み込みが非常に遅くなります。これを確認できます。

4DDF7CE1FD8584654846E8ADA9D9DECB.cache.html

現在は約2MBであるため、読み込みが遅くなります。ただし、GWT 2.5を使用すると、コンパイルサイズを約15%削減できました。ただし、サイズをさらに小さくする必要があります。コード分​​割アプローチに頼る前に、これを実行したいと思います。

PageSpeedを使用して、Minify HTML / Javascriptなどの最適化のためにこの結果を取得しましたが、GWTコードに特別に適用するのは非常に困難です。

難読化モードを選択する以外に、コンパイルサイズを最小化する方法は何ですか。圧縮モードのようなものはありますか?

4

4 に答える 4

12

あなたはブラインドサイドで問題に取り組んでいます。PageSpeedのようなツールは、実行時のパフォーマンスでより頻繁に役立ちます。

1)GWTコンパイラのレポート機能をオンにする必要があります。レポートを分析して、アプリケーションの何がその2MBに最大貢献するかについての洞察を得ます。GWTMavenプラグイン

   <compileReport>true</compileReport>
   <compilerMetrics>true</compilerMetrics>
   <soycDetailed>true</soycDetailed>

2)ビルド全体でGWTコンパイラフラグを1つずつオンにして、それらがどの程度影響するかを理解する必要があります。GWTMavenプラグイン

  <disableCastChecking>true</disableCastChecking>
  <disableClassMetadata>true</disableClassMetadata>
  <optimizationLevel>9</optimizationLevel>

3).gwt.xmlファイルのGoogleIO2011によるパフォーマンス最適化のヒント。

<set-configuration-property name="compiler.enum.obfuscate.names" value="true" />

4) .gwt.xmlファイルのprodモードでGWT例外スタックトレースコードを削除します。

<set-property name="compiler.stackMode" value="strip" />

5)閉じるにはGWTコンパイラフラグをオンにする必要があります。GWTMavenプラグイン

<enableClosureCompiler>true</enableClosureCompiler>

6)RPCを使用している場合も、メソッドのシグネチャに注意してください。rpc引数と戻り型では、インターフェイスとList、Map、Modelなどの抽象クラスを避けてください。これらは、アプリケーションのrpcフットプリントを削減するのに役立ちます。

ついに

コードスプリットの決定は、GWTコンパイラレポートの分析に基づいて行う必要があります。GZIP圧縮は、帯域幅のフットプリントを削減するのに役立ちますが、同時にブラウザとサーバーのオーバーヘッドにコストを追加します。

于 2013-01-25T04:06:56.283 に答える
3

SSRによる素晴らしいポイントがたくさん。また、RPCも難読化することを忘れないでください。そうしないと、クラス参照で肥大化してしまいます。

<inherits name="com.google.gwt.user.RemoteServiceObfuscateTypeNames"/>

ジョージは彼の素晴らしいGWTブログ投稿にいくつかの追加のヒントを持っています。

于 2013-09-29T20:00:28.023 に答える
1

この巨大なサイズはGWT用ではなく、GXTウィジェット用です。次のことをお勧めします。

  • JettyGZip圧縮機能を使用します。
  • できるだけ早くGWTコードスピッティングを使用してください。
于 2013-01-24T10:41:25.710 に答える
1

選択肢はほとんどありません。

  1. コード分​​割を使用します。
  2. アプリで使用するウィジェットの数を減らします。
  3. テキストが多いページ(ヘルプ記事など)がある場合は、このテキストを外部のTextResourceにプッシュできます。

コンパイルされたコードのサイズを減らすための魔法の解決策はありません。

于 2013-01-24T15:23:23.957 に答える