次の問題を考えてみましょう。GWT プロジェクトのオフライン マニフェスト/appcache ファイルを提供したいと考えています。このような場合、次の 2 つの問題があります。
- GWT は、(ブラウザーのバージョンに応じて) js ファイルのさまざまな順列を生成します。アプリケーションをロードするとき、一部の GWT JavaScript コードはユーザー エージェント プロパティを使用して適切なプロパティを含めます。使用しないファイルをキャッシュしたくないため、これらの順列ごとに異なるマニフェスト ファイルを生成する必要があります (これらのファイルは順列ごとに約 0.5MB になる可能性があります)。この問題は、コンパイル プロセス中にさまざまなマニフェスト ファイルを生成するMGWT Manifest Linkerによってカバーされます。
- ブラウザーで webapp をロードするときに適切なマニフェスト ファイルを提供する
この質問は問題 2 に関連しています。このマニフェストを堅牢な方法で動的に提供するにはどうすればよいですか? MGWT は、要求からのユーザー エージェントに応じて、マニフェストを提供するサーブレットを使用します。Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1)
ユーザー エージェント文字列 (例: ) を「ユーザー エージェント ID」 (例: )にマップする必要がありますie6
。MGWT リンカーによって作成されたマッピング ファイルを使用して、クライアントに提供するマニフェスト ファイルを見つけることができます。主な欠点は、完全なユーザー エージェント文字列をこのユーザー エージェント ID に単純な文字列マッチングでマップするために、簡単な文字列操作を行う必要があることです。このようなマッピングにクライアント側の GWT コードを再利用することはできません。(これはすべてこのトピックで説明されています)。その結果、順列の数やサポートされているブラウザーを変更する更新を GWT が受け取るたびに、サーブレット コードも変更する必要があります。つまり、これは堅牢なソリューションではありません。
問題は、クライアント側でこれらのファイルを動的に提供することによって、これらの GWT 順列に対して別の方法でマニフェストを提供できるかということです。