作为介绍:我是GWT和编码的新手,所以我的问题可能看起来很基本。
我使用GWT,Maven,Hibernate,IntelliJ IDEA创建了Web应用程序。我在我自己的Tomcat服务器上部署了应用程序(我有单独的计算机:HP ProLiant ML310e Gen8 v2 4核3.1GHz 4GB DDR3 + HDD 2x1TB SATA)。
它是带有5个标签的简单页面,它有一个.png 48 Kb图像作为标题。最初加载的视图具有:
这个视图几乎没有任何内容,它有以下面板,只是为了我想要的确切布局:
3个VerticalPanels,6个HorizontalPanels,1个Tree和1个Grid;
问题是:。当我第一次运行URL时,需要1:09分钟才能加载任何内容。每次我粘贴网址时,显示应用程序大约需要秒。 (页面加载后一切顺利,只需一秒钟显示小部件)
我读过这篇文章:http://blog.trifork.com/2007/11/30/optimizing-startup-time-for-gwt-hosted-mode/,但服务器在生产模式下运行应用程序(GWT.getScript()返回true)。我还在stackoverflow上讨论了一些主题,但是我没有看到加载时间是什么"正常"适用于小尺寸应用。
如果需要超过30秒的时间来运行任何东西,那么对于典型用户来说GWT似乎是不可接受的,他们可能认为链接在第一时间被破坏...我不知道它是如何工作的 - 是GWT重建并为每个新用户请求重新编译页面?
答案 0 :(得分:2)
我不知道它是如何工作的 - 是GWT重建并重新编译每个新用户请求的页面吗?
没有。
GWT使用缓存。初始加载时间实际上取决于很多因素。
当用户/浏览器第一次请求时,与页面相关的所有资源都会加载。这需要几秒钟才能加载,这取决于你的网速。
加载完整页面后,如果您要求新页面/重新加载当前页面,则此时所有资源都不会加载。
为每个请求重建和重新编译的部分是错误的。在Gwt中,存在特定于每个浏览器的排列。每个主流浏览器都有它自己的排列。例如,如果您从Mozilla请求,则与Mozilla加载相关的排列。这些排列实际上是在项目编译时生成的,您在部署项目之前已在IDE中完成了这些排列。
请求到达浏览器后,第一次将与特定排列相关的所有文件加载到浏览器中,并在浏览器中加载 缓存 。下次使用单词表单时,您将看不到任何新文件加载到浏览器中(您可以使用您的firebug查看)。
使用代码分割,惰性初始化和数据压缩技术。
答案 1 :(得分:2)
如果您继承了一些需要时间加载的模块,请检查yourapp.gwt.xml文件。
如果是这样,在第一次加载时需要时间和gwt的工作方式是加载并维护一个缓存以备将来加载,这可以解决你在下次加载时加载时间和下次加载时间的问题。
gwt不会重建或重新编译页面,只显示已编译的页面
答案 2 :(得分:1)
看一下GWT.runAsync,这将帮助你不在启动时加载所有东西,只需要你所需要的东西:)