Professional Documents
Culture Documents
Hawk Chen
hawkchen@potix.com
Outline
General debugging
Performance debugging
Help Us to Support You Better
AU request
Asynchronous Update (AJAX)
Handled by
org.zkoss.zk.ui.http.DHtmlUpdateServlet
AU request
dtid:z_l2m
cmd_0:onClick
uuid_0:cS5Q90
data_0:{"pageX":17,"pageY":213,"which":1,"x":12,"y":17}
dtid, Desktop id
cmd, event name
uuid, target components uuid
data, event related data, depending on the event
AU request
dtid:z_jvf
cmd_0:onOpen
uuid_0:zY5Q6
data_0:{open:true, value:}
AU request
When to send
a non-deferrable event
onRender, onDataLoading
sent immediately
A important event
onChange
Sent even no listener registered (with other events)
AU Response
AU Response
{"rs":[["outer",[{$u:'yZ6Q2'},[
['zul.tab.Tabbox','yZ6Q2',{width:'20%',prolog:'\n\t'},{},[
['zul.tab.Tabs','yZ6Q3',{},{},[
['zul.tab.Tab','yZ6Q8',{$onSelect:false,$onClose:true,label:'tab 1,iconSclass:'z-iconbook',selected:true},{},[]],
['zul.tab.Tab','yZ6Qf',{$onSelect:false,$onClose:true,label:'tab 2,iconSclass:'z-icon-book'},{},[]]]],
],"rid":1}
AU Response
{"rs":[["rm",["zY5Q10"]],["rm",["zY5Qz"]],["rm",["zY5Q60"]],["rm",["zY5Q80"]],
["rm",["zY5Qa0"]],["rm",["zY5Qe0"]],["rm",["zY5Qc0"]],["rm",["zY5Qq0"]],["rm"
,["zY5Qo0"]],["rm",["zY5Qm0"]],}
rm
Remove the specified component by it UUID
AU Response
{"rs":[["addChd",["iB0Zk0",[
['zul.sel.Treeitem','iB0Zy1',{open:false,_loaded:true},{},[
['zul.sel.Treerow','iB0Zz1',{},{},[
['zul.sel.Treecell','iB0Z_2',{label:'< 2.0L(inc.)},{},[]],
['zul.sel.Treecell','iB0Z02',{label:'3'},{},[]]]]]]],,"rid":7}
addChd
Add child components
e.g. expand a tree item
Case Study
Timer
Check AU request/response
Tabbox
Should use ListModelList to avoid re-rendering
Select
Avoid mixing MVC with MVVM
Performance Debugging
Mostly bottleneck can one of the following:
Client
Network
Server
Performance Debugging
Network Timing
Case Study
Server
Client
Profiling
THANK YOU
info@zkoss.org
hawkchen@potix.com