Details
-
Type:
Improvement
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: EE-3.3.0.GA, 4.0
-
Fix Version/s: EE-4.2.0.GA, EE-3.3.0.GA_P05
-
Component/s: ACE-Components
-
Labels:None
-
Environment:Any
-
Assignee Priority:P3
-
ICEsoft Forum Reference:
Description
Because, in lazy mode, loading data can be an expensive operation on some applications, it would be beneficial for many users if the ace:dataTable component was more efficient in calling LazyDataModel.load(), thus optimizing its performance. This could be accomplished via a built-in caching system and/or with better logic to avoid rebuilding the model in certain cases. The purpose of this JIRA is to investigate the possibility of improving data loading performance in lazy mode and implementing an optimization that is feasible if possible.
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
r51530: fix to call the LazyDataModel load method only once during the render phase and once during the previous phases, unless it is a filter request
Indeed, the load() method in LazyDataModel was being called multiple times during a lifecycle, five times or more in some cases. It was being called in every visitTree operation.
This fix reduces the number of times the load() method is called to only two: one at the beginning of the lifecycle and one more when the component is ready to be rendered (it is necessary to be called again in the render phase because of any model updates and app changes that could've happened). This is the case for most requests, except for filtering requests, in which it is necessary to call the load() method a few more times to reflect the filtered data.
Testing notes: please run all regression tests related to lazy loading. The change itself is not very visible, the only way to test it would be to add a println statement in the LazyDataModel.load() method and verify that it's only called twice per request (except for filtering requests).
Verified can not reproduce 4 invocations of load() method ICEfaces EE-3.3.0 maintenance branch r51633 and 51694, Tomcat 8, IE11, FF 47, Chrome 59.