是否可以使用具有特定于区域设置的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和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] 删除。
我来说两句