ClientBundle その3

ClientBundleにより参照されたリソースはGWTコンパイル時にクライアント側(HTML、スクリプト)に埋め込まれてキャッシュされることになるが、その形式により格納の方法が変わる。

最も典型的なのはImageResourceであり、前回紹介したスプラッシュのカーソルとして使用しているgifイメージをClientBundle中に定義した場合、

public interface AddressBookResources extends ClientBundle {
    public static final AddressBookResources INSTANCE = 
        GWT.create(AddressBookResources.class);

    @Source("../client/css/splash.gif")
    ImageResource splash();
    :
}

GWTコンパイルによりモジュールパッケージ下にハッシュ化された名前(この場合324225BFCE5DD1E8FDFA674C6AFEE915.cache.gif)でgifイメージはコピーされる。

そして、このイメージが直接使用されるのではなく、実際にはjavascriptのデータスキーマURIに変換されて埋め込まれるのだ。


Chromeデベロッパーツール、Element解析でその時点のHTMLをダンプしているが、データスキーマ形式に変換されていることが分かるだろう。

目的は勿論サーバとのラウンドトリップを減らして全体の性能を上げることだが、どんなサイズのイメージも同様に変換されるのかは不明だ。