我想更好地理解GWT ClientBundle和缓存的使用.
例如,如果我有一个大文本文件,我想让我的客户端可用,我可以使用
public interface MyResources extends ClientBundle {
public static final MyResources INSTANCE = GWT.create(MyResources.class);
@Source("myText.txt")
public TextResource myText();
}
//-- then later to use the text
String text = MyResources.INSTANCE.myText().getText();
Run Code Online (Sandbox Code Playgroud)
这是否意味着在客户端第一次运行应用程序时将从服务器下载文件"myText.txt",然后该文件将存储在浏览器的缓存中,以便在将来使用该应用程序时,该文件不会需要下载?
如果是这样,如果我更改"myText.txt"会发生什么,应用程序是否知道获取新版本?
最后,如果文件确实存储在缓存中,那么这与HTML5中的本地存储有何不同?
谢谢.
*.cache.*文件)中内联,其中编译的GWT代码的其余部分存在.@ImageOptions.preventInlining()它来防止,而对于ExternalTextResources则不会出现这种情况.这两种情况的共同点是,结果将存储在*.cache.*文件中,只要源文件的内容发生变化,就会自动更改唯一名称(您必须重新编译GWT应用程序!)
这允许服务器使用适当的缓存HTTP头传递这些文件(你必须自己设置它!)对于客户端,这意味着它不仅能够缓存内容(无论如何,即使那些标题没有设置),但它甚至可以跳过询问服务器,如果存在更新的版本.
ClientBundles的最大优点是文件名会自动更改.最大的缺点是,当资源发生变化时,您必须重新编译GWT应用程序.如果您不想这样,那么最好使用其他方法来加载文件:您仍然可以使浏览器缓存您喜欢的任何文件(通过设置HTTP标头),但是您必须小心当内容发生变化时,手动为其指定新名称.
| 归档时间: |
|
| 查看次数: |
1152 次 |
| 最近记录: |