Java 使GWT应用程序即使在低带宽下也能工作

Java 使GWT应用程序即使在低带宽下也能工作,java,gwt,bandwidth,Java,Gwt,Bandwidth,我正在开发一个GWT应用程序,我想根据互联网带宽速度使用文件进行上传/下载。 是否有任何方法可以检测GWT中的internet带宽/速度,以确定要加载的文件。 谢谢。好吧,没有任何东西可以提供这些信息,除非您尝试下载或上传一些东西,并在客户端测量时间 测量下载带宽可以简单到计算应用程序加载的时间,或者最好向服务器发送请求,请求已知大小的请求 1.-案例1(为了简单起见,我使用) 在index.html中设置此项 <script> window._app_start_loading

我正在开发一个GWT应用程序,我想根据互联网带宽速度使用文件进行上传/下载。 是否有任何方法可以检测GWT中的internet带宽/速度,以确定要加载的文件。
谢谢。

好吧,没有任何东西可以提供这些信息,除非您尝试下载或上传一些东西,并在客户端测量时间

测量下载带宽可以简单到计算应用程序加载的时间,或者最好向服务器发送请求,请求已知大小的请求

1.-案例1(为了简单起见,我使用)

index.html中设置此项

<script>
  window._app_start_loading = new Date().getTime();
</script>
根据应用程序JS的大小和体验,您可以计算用户是否使用了质量较差的网络

2.-案例2:但下面的示例有一个问题,用户浏览器将缓存请求,因此它只在用户第一次运行应用程序时起作用。这样做更准确、更可靠:

onModuleLoad(){
最终双启动=持续时间.currentTimeMillis();
双毫秒=开始-持续时间.currentTimeMillis();
GQuery.post(“我的应用程序/固定大小的请求?”+持续时间.currentTimeMillis(),null,新函数(){
公共空间f(){
双毫秒=开始-持续时间.currentTimeMillis();
}
});
}
现在您知道大小总是相同的,并且请求没有被缓存


3.-测量上传。您可以执行与案例2中相同的操作,但在请求中发送一些大小已知的POST数据。更换第二个参数。

上传速度可以在测量后几秒钟更改,然后一次又一次更改。如果在加载每个文件之前尝试对其进行测量,那么这样做的开销可能会超过任何好处

如果这对你的应用程序至关重要,你可以提供你的应用程序的“完整”和“简化”版本,并让用户选择。这是Chess.com使用的一种方法,例如,连接速度对于玩家体验非常重要。与更完整的“桌面”版本相比,许多网站提供更轻的“移动”版本的应用程序,这通常意味着图像的分辨率也不同


另一种方法是允许用户在媒体文件的“标准”和“高清”分辨率之间进行选择,但它也可以应用于其他文件类型。这是YouTube、iTunes(电影版)和许多其他网站使用的一种方法。

您可以将GWT应用程序拆分为多个部分,以便仅在需要时加载部分。这是完整记录的,请参阅。非常强大的东西。 无论您的连接速度如何,它都会使初始负载更小更快。每次使用新的“功能”时,都会下载一个小的附加包(仅在第一次使用时)。如果您按照文档进行操作,那么这是透明的

另外,请确保正确配置web服务器,以便它充分利用GWT
*.cache.js
部分的可缓存性