Complex Xpage takes long for partial refreshs

2020-07-22 19:05发布

问题:

I have a complex xpage with lots of nested custom controls. Everytime I execute a partial refresh it takes over 4 seconds to finish. If I remove the complexity it works just fine and is fast as wished.

I put a test on this complex Xpage and even with partial execution mode this simple test takes over 4 seconds to finish.

<xp:button value="Label" id="button1">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="refreshPanel" disableValidators="true" execMode="partial" execId="inputText1">
    </xp:eventHandler>
</xp:button>
<xp:div id="refreshPanel">
    <xp:inputText id="inputText1"></xp:inputText>
</xp:div>

execution time of partialrefresh

Does anyone have a hint on this? Any server settings which can be adjusted?

回答1:

There's a few little tweaks you can make to help speed things up (in general) however I'm not sure how they would help with a single complex page, but.....

  • Change the server page persistence setting to keep the current page in memory
  • Minimize the use of SSJS
  • Partial Execution mode (which Knut has already mentioned)
  • Support Concurrent User Load
  • Keep the Maxheap size at ¼ of the available RAM
  • For your XSP properties, enable “Use run-time optimized java script and CSS resources”
  • Set your value bindings so they compute on the page load.

All of the above are tips/recommendations I've read from other developers over the years and I implement/try to implement myself where possible so might be worth trying some/all to see if it helps?



回答2:

Even though it is a partial refresh all XPage controls' values are submitted to server. "partial" means in this case that only the label1 part returns to client. But it is a full submit and this might take time...

You can submit partially though. Add

execMode="partial" execId="button1"

to your eventHandler properties. This time only the execId's value gets submitted. Put in execId the id that needs to be submitted (maybe a panel) for this partial refresh.

Have a look here for more information on partial execution mode .