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