我有一个严重的性能问题,特别是显示我的主页,其中包含一个非常复杂的问题rich:数据表。在本地服务器上部署应用程序时,完成一个请求可能需要5秒钟以上。
主页是一个ui:由一个简单的模板组成(问题不在模板上,其他页面的速度相当快),但组成本身是巨大的(大约1000行)。
页面有两个部分,下面的部分是一个复杂的datatable,在这里我使用多个数据表的组合实现了rowspan
丰富:微妙
s和
提供
属性。所遵循的方法可见一斑
in this Richfaces forum discussion
页面的上半部分包含datatable的筛选器列表。我不使用过滤器丰富:数据表标题,因为我想要下面的款式。
如果按下Add按钮,则会发出AJAX请求(a4j:commandButton)向backing集合添加另一个Filter对象,然后
过滤器
使用a4j重新渲染:重复(
).
这个rich:datatable是
只有
按下“搜索”按钮时重新启动。
观察:
修改
BalusC's Debug Phase Listener
2010-09-21 11:23:41,235 - Processing new Request!
2010-09-21 11:23:41,235 - before - RESTORE_VIEW 1
2010-09-21 11:23:41,235 - after - RESTORE_VIEW 1
2010-09-21 11:23:41,251 - before - APPLY_REQUEST_VALUES 2
2010-09-21 11:23:41,454 - getRowData-16: 84,026 ms
Home Page Query-16: 58,178 ms
2010-09-21 11:23:42,360 - after - APPLY_REQUEST_VALUES 2
2010-09-21 11:23:42,360 - before - PROCESS_VALIDATIONS 3
2010-09-21 11:23:42,438 - getRowData-16: 0,005 ms
2010-09-21 11:23:43,126 - after - PROCESS_VALIDATIONS 3
2010-09-21 11:23:43,126 - before - UPDATE_MODEL_VALUES 4
2010-09-21 11:23:43,188 - getRowData-16: 0,005 ms
2010-09-21 11:23:43,938 - after - UPDATE_MODEL_VALUES 4
2010-09-21 11:23:43,938 - before - INVOKE_APPLICATION 5
2010-09-21 11:23:43,938 - after - INVOKE_APPLICATION 5
2010-09-21 11:23:43,954 - before - RENDER_RESPONSE 6
2010-09-21 11:23:44,282 - getRowData-16: 0,007 ms
2010-09-21 11:23:45,173 - after - RENDER_RESPONSE 6
2010-09-21 11:23:45,173 - Done with Request!
当我评出rich:datatable和仅显示过滤器,渲染速度明显加快:
2010-09-21 11:50:52,780 - Processing new Request!
2010-09-21 11:50:52,780 - before - RESTORE_VIEW 1
2010-09-21 11:50:52,780 - after - RESTORE_VIEW 1
2010-09-21 11:50:52,780 - before - APPLY_REQUEST_VALUES 2
2010-09-21 11:50:52,858 - after - APPLY_REQUEST_VALUES 2
2010-09-21 11:50:52,858 - before - PROCESS_VALIDATIONS 3
2010-09-21 11:50:52,920 - after - PROCESS_VALIDATIONS 3
2010-09-21 11:50:52,920 - before - UPDATE_MODEL_VALUES 4
2010-09-21 11:50:52,967 - after - UPDATE_MODEL_VALUES 4
2010-09-21 11:50:52,967 - before - INVOKE_APPLICATION 5
2010-09-21 11:50:52,967 - after - INVOKE_APPLICATION 5
2010-09-21 11:50:52,983 - before - RENDER_RESPONSE 6
2010-09-21 11:50:53,186 - after - RENDER_RESPONSE 6
2010-09-21 11:50:53,186 - Done with Request!
整个请求只花了400毫秒。
问题:
-
这个性能问题是JSF组件树问题吗?
-
我不认为将页面分解成其他ui:compositions会有帮助。我相信这将产生一个相同的JSF组件树。
-
我能做些什么来加快页面速度?
代码:
in PasteBin