Details
-
Type: Improvement
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: EE-3.3.0.GA, 4.0.BETA, 4.0
-
Labels:None
-
Environment:ICEfaces framework, bridge
-
Assignee Priority:P2
-
Affects:Documentation (User Guide, Ref. Guide, etc.)
Description
Currently (3.2), when the bridge applies DOM updates it then scans all components looking for components with 'onElementUpdate' callbacks defined that are affected by the updated DOM region. This process occurs in JavaScript on the browser, and can be very expensive/slow particularly on IE7/8 browsers. This performance issue is preventing wide-scale adoption of the the onElementUpdate callback to improve JS memory cleanup in the ACE components.
An improved implementation may be to compile a list of the components affected by a particular DOM update on the server, such that the bridge could then simply call each one's onElementUpdate callback in sequence and avoid the expensive searching through the component list on the browser. Presumably the callback list would be sent to the bridge as part of each DOM update message.
An improved implementation may be to compile a list of the components affected by a particular DOM update on the server, such that the bridge could then simply call each one's onElementUpdate callback in sequence and avoid the expensive searching through the component list on the browser. Presumably the callback list would be sent to the bridge as part of each DOM update message.
Activity
Ken Fyten
created issue -
Ken Fyten
made changes -
Field | Original Value | New Value |
---|---|---|
Assignee | Mircea Toma [ mircea.toma ] | |
Fix Version/s | 3.3 [ 10370 ] | |
Assignee Priority | P2 [ 10011 ] |
Ken Fyten
made changes -
Fix Version/s | 3.4 [ 10770 ] | |
Fix Version/s | 3.3 [ 10370 ] |
Ken Fyten
made changes -
Assignee Priority | P2 [ 10011 ] | P3 [ 10012 ] |
Ken Fyten
made changes -
Assignee Priority | P3 [ 10012 ] | P2 [ 10011 ] |
Mircea Toma
made changes -
Status | Open [ 1 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Ted Goddard
made changes -
Resolution | Fixed [ 1 ] | |
Status | Resolved [ 5 ] | Reopened [ 4 ] |
Mircea Toma
made changes -
Status | Reopened [ 4 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34503 | Tue Apr 23 04:19:50 MDT 2013 | mircea.toma | |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/context/DOMPartialViewContext.java
|
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34526 | Thu Apr 25 06:17:15 MDT 2013 | mircea.toma | |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/compat/core/src/main/java/com/icesoft/faces/context/DOMContext.java
|
Ken Fyten
made changes -
Resolution | Fixed [ 1 ] | |
Status | Resolved [ 5 ] | Reopened [ 4 ] |
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34543 | Thu Apr 25 16:14:33 MDT 2013 | mircea.toma | ICE-9219, |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/compat/core/src/main/java/com/icesoft/faces/context/DOMContext.java
|
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34560 | Fri Apr 26 14:00:16 MDT 2013 | mircea.toma | |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/core/src/main/javascript/application.js
|
Mircea Toma
made changes -
Status | Reopened [ 4 ] | Resolved [ 5 ] |
Affects | Documentation (User Guide, Ref. Guide, etc.) [ 10003 ] | |
Resolution | Fixed [ 1 ] |
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34590 | Mon Apr 29 16:34:58 MDT 2013 | mircea.toma | |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/event/BridgeSetup.java
MODIFY /icefaces3/trunk/icefaces/core/src/main/javascript/application.js MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/context/DOMPartialViewContext.java MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/util/EnvUtils.java |
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34636 | Wed May 01 13:41:09 MDT 2013 | mircea.toma | ICE-9219 Register 'id' attribute as being the attribute name used to lookup elements in the document (thus helping with the element lookup on the server, such as in |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/compat/core/src/main/java/com/icesoft/faces/renderkit/dom_html_basic/DomBasicRenderer.java
|
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34647 | Wed May 01 16:45:46 MDT 2013 | mircea.toma | |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/util/ComponentUtils.java
|
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34648 | Wed May 01 17:26:09 MDT 2013 | mircea.toma | |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/core/src/main/javascript/application.js
MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/context/DOMPartialViewContext.java |
Ken Fyten
made changes -
Link | This issue blocks ICE-8477 [ ICE-8477 ] |
Ken Fyten
made changes -
Link | This issue blocks MOBI-314 [ MOBI-314 ] |
Ken Fyten
made changes -
Fix Version/s | EE-3.3.0.GA [ 10572 ] |
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34997 | Mon May 13 16:10:43 MDT 2013 | mark.collette | |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/submitmonitor/SubmitMonitorRenderer.java
|
Repository | Revision | Date | User | Message |
ICEsoft Public SVN Repository | #34998 | Mon May 13 16:21:32 MDT 2013 | mark.collette | |
Files Changed | ||||
MODIFY
/icefaces3/trunk/icefaces/compat/components/src/main/java/com/icesoft/faces/component/paneltabset/PanelTabSetRenderer.java
|
Ken Fyten
made changes -
Fix Version/s | 4.0 [ 11382 ] |
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
This appears to directly defeat a variety of optimizations:
client-side, it defeats the use of innerHTML, server-side it defeats
DOM diff short circuits.
If the number of listeners is "small", then for each listener we
could store the DOM node before the update and check its DOM status
(walk up to root) after the update is applied. If it is not in the DOM, the listener would be called. (The question is whether this works on IE; if there are difficulties, perhaps checking the root node for identity against the current root node would work.)
Essentially we're trying to do this:
https://developer.mozilla.org/en-US/docs/DOM/Mutation_events
1.5x - 7x slowdown in DOM operations
A server-side implementation of this would require substantial interaction with the "old" DOM, which is likely to be inefficient (this requirement was not realized when the server-side technique was originally proposed).
The main point is that this listener technique should be avoided as much as possible.