0

gwts clientbundle + imageresource の目的は、http リクエストの数を 1 つに減らし、転送されるバイト数を最小限に抑えることです。一方、clientbundle は、すべての jpg-pics を含む単一の jpg ストリップ ファイルを作成します。たとえば、10 枚の写真がある場合、clientbundle はこれら 10 枚の写真すべてを 1 つの jpg-strip-file に配置し、アプリがこれらすべての画像を呼び出す場合、1 つの jpg-strip ファイルに対する http 要求は 1 つだけになります。それは私が理解していることです。問題は、clientbundle が単一のストリップ ファイルを作成していないことです。キャッシュ可能なファイルが 10 個作成されますが、キャッシュを有効にしても、この単一のストリップファイルは作成されません。clientbundleの目的は何か間違っていることを理解していますか?

4

1 に答える 1

2

あなたの質問には2つの小さな誤解があります:

  • ClientBundle は IE6/7 用のスプライト画像のみを生成します。他のすべてのブラウザーではdata:、画像のサイズがしきい値になるまで URL を使用し (少なくともこれが既定の構成です)、その後、画像を外部の画像 (スプライトされていない) として直接参照します。

  • ClientBundle は、非可逆圧縮 (JPEG など) の画像に対してスプライト画像 (IE6/7 用) を生成せず、可逆圧縮 (PNG や GIF など) の画像に対してのみ、アニメーション化されていない場合にのみ生成します。大きすぎない (しきい値はシステム プロパティによって制御され、gwt.imageResource.maxBundleSizeデフォルトは 256 ピクセル)

あなたの場合、JPEG画像がしきい値を超えているため、data:URLとしてインライン化されておらず、JPEGであるため(つまり、非可逆圧縮を使用)、生成されたスプライト画像も表示されません。

注: data:URLには、実際にはいくつかのしきい値があります。

于 2013-07-22T08:41:23.550 に答える