GWT ImageResource,具有特定于语言环境的网址

帕特里克

是否可以使用具有特定区域设置的url的GWT ImageResource,而不必复制基础图像?

我阅读了一张影响SEO的图片网址,应该选择一些有意义的关键词来提高排名。因此,理想情况下,我希望在图像url中包含特定于语言环境的关键字,即图像名称来自i18n Constants类。

就像调用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();
}

在浏览器中,我希望该网址看起来像这样:

  • 法语:
    • 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中的网址?

舒克

似乎您缺少ClientBundle的基本逻辑,我将在稍后解释,但是您应该查看TLTR版本的GWT规范。

简而言之,在编译应用程序后,gwt编译器将获取MyImageBundle类中由ImageResource注释的所有图像文件,并将其打包到一个单独的Sprite Sheet图像文件中(具有加扰的SHA1哈希文件名),以节省下载空间和时间它。

此文件保存在GWT编译目录下,并且GWT Image类知道如何使用它来正确显示图像。

看来您应该为此目的而跳过使用ImageResource:

修改您的代码:

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

而不是在服务器端克隆文件,您可以编写(或在Web上查找)非常简单的http路由器,该路由器同时向这两个服务器提供内容调用:mydomain.com/myFrenchPath/myFrenchKeywordFoo1.png mydomain.com/myEnglishPath/myEnglishKeywordFoo1.png来自:mydomain.com/images/KeywordFoo1.png

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章