Feature #7986


Consider optimizing updates by only changing changed form values?

Added by Roel Standaert over 3 years ago. Updated almost 2 years ago.

Target version:
Start date:
Due date:
% Done:


Estimated time:


On every signal all form data is submitted to the server, even form data that hasn't changed since the last signal. Maybe we could make it so that only updated form data is sent, and not all form data.

Special care will have to be taken for situations where absence of form data has a particular meaning, e.g. no values for WSelectionBox means no selection. In that case we could encode it as an array instead? Since WSelectionBox is supported when JavaScript is disabled, the old behavior should still work.

Apart from making the signals a bit smaller this may help in situations where many signals are being sent very quickly, causing the server side value of some widgets to be temporarily reset to their old value.

Suppose an update from the server changes the selected item in a WComboBox, but before that update was received and processed by the browser many events occur. These events will still have the old item selected. The effect will be that the current selected item of the WComboBox temporarily switches back to the old value after being changed, to then settle to the new value once a signal from the client comes in after the client has updated its value.

Actions #1

Updated by Roel Standaert over 3 years ago

Note: we'd also have to take note of all of the form values after every server update, so we can catch the situation where the server changes something and the user changes it back to the old value.

Actions #2

Updated by Korneel Dumon over 3 years ago

I think the race condition can still occur. If the formwidget value in the client changes rather than stay the same, then the server will still get the wrong value.

Actions #3

Updated by Roel Standaert over 3 years ago

Hence I said "may help". I think that's the more uncommon case, and we can't really (or at least easily) avoid a race condition in that case.

Actions #4

Updated by ruben kindt almost 3 years ago

  • Assignee set to ruben kindt
Actions #5

Updated by Roel Standaert almost 2 years ago

  • Assignee deleted (ruben kindt)

Also available in: Atom PDF