GWT低性能

3
作为介绍:我对GWT和编程都很陌生,因此我的问题可能看起来很基础。

我使用GWT、Maven、Hibernate和IntelliJ IDEA制作了Web应用程序。我将应用程序部署在自己的Tomcat服务器上 (我有一台专门用于这个目的的计算机: HP ProLiant ML310e Gen8 v2 4-Core 3.1GHz 4GB DDR3 + HDD 2x1TB SATA)。

这是一个包含5个选项卡的简单页面,头部有一个48 Kb的.png图像。最初加载的视图包括:

  • 2个带有少量文字的标签,
  • 包含20行内容的CellTable(内容通过RPC从数据库获取),
  • 4个按钮(用于分页)。

这个视图几乎没有任何内容,只是按照我想要的精确布局包含以下面板:

3个VerticalPanels,6个HorizontalPanels,1个Tree和1个Grid

问题是: 当我第一次运行URL时,它需要1:09分钟才能加载出任何内容。然后每次粘贴URL,它都需要大约1秒钟才能显示应用程序。(加载完成后,所有组件都运行流畅,仅需1秒钟即可显示小部件)

我阅读了这篇文章:http://blog.trifork.com/2007/11/30/optimizing-startup-time-for-gwt-hosted-mode/ ,但服务器在生产模式下运行应用程序(GWT.getScript()返回true)。我也看了一些stackoverflow上的话题,但我不知道对于小型应用程序来说,什么样的加载时间是“正常”的。

如果需要超过30秒才能运行任何内容,那么GWT似乎无法满足普通用户的需求,他们可能会认为链接已经被损坏... 我不知道它是如何工作的-是否为每个新用户请求重建和重新编译页面?


你使用的是旧版 dev 模式还是 SuperDevMode? - Chris Hinshaw
使用浏览器中的开发者工具,查看您的rpc调用的网络传输时间。如果其中一个花费了很长时间,那可能就是瓶颈所在的地方。 - Chris Hinshaw
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Andrei Volgin
另外,我建议您使用一个LayoutPanel而不是您用于布局的9个面板。 - Andrei Volgin
3个回答

2
我不知道它是如何工作的 - GWT是否对每个新用户请求重新构建和重新编译页面?
不是的。
GWT使用缓存。初始加载时间实际上取决于许多因素。
当用户/浏览器首次请求时,所有与页面相关的资源都会加载。这需要几秒钟的时间来加载,并且实际上取决于您的互联网速度。
一旦完整页面加载完成,并且如果您请求新页面/重新加载当前页面,则此时不会加载所有资源。
关于每个请求重建和重新编译的部分是错误的。在Gwt中,有针对每个浏览器特定的排列组合。每个主要浏览器都有自己的排列组合。例如,如果您从Mozilla请求,将加载与Mozilla相关的排列组合。这些排列组合实际上是在部署项目之前,在IDE中完成项目的编译时生成的。
一旦请求到达浏览器,对于首次,这些与特定排列组合相关的所有文件都会加载到浏览器中并在浏览器中缓存。从下一次开始,您将不会看到任何新文件加载到浏览器中(您可以使用Firebug查看)。
使用代码拆分、延迟初始化和数据压缩技术。

继续阅读.....


2

如果您在yourapp.gwt.xml文件中继承了一些需要加载时间的模块,请检查。

如果是这样,在第一次加载时会花费一些时间,GWT的工作方式是加载并维护缓存以供将来加载使用,这解决了您在第一次加载时需要等待几秒钟的问题。

GWT不会重建或重新编译页面,只会显示您已经编译好的页面。


1

看一下GWT.runAsync,它可以帮助你避免在启动时加载所有内容,只加载你需要的部分 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接