他在一个非常缓慢的GWT应用优化性能,提示为移动浏览器
也许可以一些你分享他们的GWT移动开发的经验?
我们正在开发一个漂亮的互动式网站,其中有许多可点击的面板/按钮,并且遇到巨大的浏览器迟缓问题。这是一个虚拟的不走,导航到下一页有时需要一分钟。
它可能是一个架构弱点:每个元素都是一个可能包含子视图的视图。并且每个视图都由来自服务器的DTO支持。也许这样的深层对象图太多了,但我们正在努力专注于优化视图渲染的效率,因为拆分组件中的所有东西的想法对我们来说是非常宝贵的:)以下是我关心的一些问题,但有可能更多。
由于从谷歌I/O 2010大会视频提示,我试图用UiBinder的构建部件。但是这并没有带来很大的速度提升。我们使用很多面板 - HTMLTable,HTMLPanel,VerticalPanel, - 因为承载其他视图的每个视图都应该以某种方式附加它们。可以用新的CellList替换它们是否有一些好处,或者是一个简单的HorizontalPanel已经足够轻量级了吗?
页面上可点击小部件丢失。虽然一般建议是削减小部件,但我们确实需要它们来处理onMouseDown事件。什么是最少的CPU密集型可点击组件 - 带有MouseDown处理程序的VerticalPanel,一个Button等?
一旦用户点击一个按钮,就会发出PRC请求。我注意到,如果PRC调用停止了一段时间,那么点击按钮的样式呈现比单击按钮之后立即进行RPC调用要快得多。是否有一种模式指示如何触发不会干扰样式呈现的RPC调用。
性能分析报告(Firebug和Speedtracer)表明setInnerHTML()和add()调用了大部分负载。当视图附加到他们的父母时应该调用add(),我不知道为什么setInnerHTML需要这么长时间(根据视频演示,他们应该非常快速)。有没有合理的方法来优化add()调用?我真的想不出有办法做到这一点。
我欣赏每一个建议。谢谢。
是的,我知道新的基于单元格的小部件,但仍然没有得到他们有用的情况。我将一组对象附加到HTMLPanels/HTMLTables。这些小部件是否说CellList比HTMLPanel更适合布局? – d56 2010-10-17 11:59:45
如果对象可以用类似于http://gwt.google.com/samples/Showcase/Showcase.html#!CwCellTable的方式表示,那么基于单元格的小部件可能更适合HTMLTables。我认为基于Cell的小部件是在显示大量数据的基础上构建的,所以他们可能会更有效地处理添加数据,然后再使用标准小部件。 – 2010-10-17 18:31:23