0

基になるイメージを複製することなく、ロケール固有のURLを持つ GWT ImageResourceを持つことは可能ですか?

画像の URL が SEO に影響を与えることを読みました。ランキングを向上させるには、意味のある適切なキーワードを選択する必要があります。したがって、理想的には、画像の URL にロケール固有のキーワードを含めたいと考えています。これは、i18n 定数クラスに由来する画像名です。

myImageResource.setUrl を呼び出すのと同じくらい簡単でしょうか? もしそうなら、いつそれを呼び出すかは重要ですか?

または、URLを設定するための注釈はありますか?

以下は、いくつかのコード コンテキストです。

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

  public static final String IMAGE_PATH = "image/";

  @Source(IMAGE_PATH + "foo1.png")
  ImageResource foo1();

  @Source(IMAGE_PATH + "foo2.png")
  ImageResource foo2();
}

ブラウザでは、URL を次のようにしたいと思います。

  • フランス語:
    • foo1: mydomain.com/myFrenchPath/myFrenchKeywordFoo1.png
    • foo2: mydomain.com/myFrenchPath/myFrenchKeywordFoo2.png
  • 英語:
    • foo1: mydomain.com/myEnglishPath/myEnglishKeywordFoo1.png
    • foo2: mydomain.com/myEnglishPath/myEnglishKeywordFoo2.png
  • ...

画像 foo1 と foo2 はすべてのロケールで同じですが、URL をロケール固有にしたいだけです。

URL を形成するパスとキーワードは、次のような定数から取得するのが理想的です。

public interface MyConstants extends com.google.gwt.i18n.client.Constants
{
  String path();
  String keywordFoo1();
  String keywordFoo2();
}
MyConstants myConstant = (MyConstants) GWT.create(MyConstants.class);

以下は機能しますか?それは正しい方法でしょうか?

Image foo1Image = new Image(MyImageBundle.INSTANCE.foo1());
foo1Image.setUrl(myConstant.path() + "/" + myConstant.keywordFoo1() + ".png");

または、MyImageBundle に URL を設定するための注釈はありますか?

4

2 に答える 2

2

ClientBundle の基礎となるロジックが欠落しているようです。簡単に説明しますが、TLTR バージョンの GWT 仕様を確認する必要があります。

つまり、アプリのコンパイル時に、gwt コンパイルは、MyImageBundle クラスの ImageResource によって注釈が付けられたすべての画像ファイルを取得し、1 つのスプライト シート画像ファイル (スクランブルされた SHA1 ハッシュ ファイル名を使用) にパックして、ダウンロードのスペースと時間を節約します。それ。

このファイルは GWT のコンパイル済みディレクトリに保存され、GWT の Image クラスはそれを操作して画像を適切に表示する方法を認識しています。

この目的のために ImageResource の使用をスキップする必要があるようです:

コードを修正してください:

Image foo1Image = new Image();
foo1Image.setUrl(myConstant.path() + "/" + myConstant.keywordFoo1() + ".png");

サーバー側でファイルを複製する代わりに、両方へのコンテンツ呼び出しを提供する非常に単純な http ルーターを作成 (または Web で検索) できます: mydomain.com/myFrenchPath/myFrenchKeywordFoo1.png : mydomain.com/images/KeywordFoo1.png

于 2013-09-22T20:24:23.173 に答える