我有一个关于RequestFactory和GWT性能的问题。我有一个包含8个字段的域实体,它返回大约1000 EntityProxies。请求触发和响应之间的时间大约为20秒。我做了同样的事情,但是返回10 EntityProxies,时间是17秒,几乎是一样的。
这是因为我在开发模式下工作,还是当我将代码发布到web上时,时间是一样的?
有什么方法可以提高性能吗?,我只读数据,所以可能只读而不写的东西可能是解决方案?
我读了这篇文章,带着类似于我的问题:
GWT Requestfactory performance suggestions
非常感谢。
PD:我在某处读到,一种解决方案可能是在服务器中创建一个xml,将其发送到客户端并在那里重新创建对象,我不想这样做,因为它会真正改变我的应用程序的设计。
发布于 2013-01-18 02:01:24
感谢大家的帮助,我现在意识到也许使用Request Factory来检索数千条记录是一个错误。
根据这篇文章,我最初使用定位器覆盖了isLive()和Find()方法:gwt-requestfactory-performance-suggestions
响应时间减少到13秒左右,但仍然太高。
但我很容易就解决了。我没有返回1000+实体,而是创建了一个新的数据库表,其中每个字段都有由分隔符连接的所有相同的字段记录(1000+) (每个数据库字段的长度约为10000 ),并且我在表中只有一条记录,大约有8个字段。
如下所示:
Field1 | Field2 | Field3 Field1val;.......|Field2val;......|Field3val;......
我通过RequestFactory将这一条记录返回给我的客户端,这大大降低了速度!,大约1秒。我在客户端解析这个大字符串,它的持续时间大约是500ms。因此,现在不是浪费大约20秒,而是需要大约1-2秒才能完成同样的任务。
顺便说一下,我只显示信息,不需要插入、删除或更新记录,所以这个解决方案适用于我。
我想我可以分享这个解决方案。
发布于 2013-01-17 02:08:34
GWT中的性能分析和修复问题很棘手。避免在GWT托管模式下进行所有分析。它们并不意味着任何有用的东西。
您应该仅在WEB模式下进行评测。
GWT在设计上比GWT和GWT等要慢。这是一种折衷方案,它能够计算增量并在保存时仅向服务器发送少量信息。
您应该重新检查您的应用程序设计,以避免加载1000个代理。RF指的是类似于应用程序的“形式”。您可能需要1000个代理的唯一原因是为了网格显示。在这种情况下,您可能可以使用分页异步网格。
发布于 2013-01-17 18:48:49
你应该分析你的应用程序,以便找出在以下步骤上花费了多少时间:
从数据库(服务器)中检索
RequestFactory和AutoBean分别依赖于反射。您可以尝试仅传输您还将在客户端上显示的实体。另一个极大地减少延迟的优化是覆盖EntitiyLocator的isLive方法,并将true提高性能的一种方法是使用缓存。您可以使用HTML5 localstorage在客户端上缓存数据。这特别适用于不经常更改的数据。
https://stackoverflow.com/questions/14363495
复制相似问题