Skip to content

Performance Problem with big Ui5 Apps using XMLViews #4351

@dcwb89

Description

@dcwb89

Why are you proposing this feature?

This ticket is not entirely a feature request, but rather an inquiry about what appears to be intentional behavior.

TL;DR:

  • OpenUi5 app in version 136 with 150+ XML views
  • Problem: views are being preserved by RenderManager and “polluting” the DOM to such an extent (~20k elements) that the app is hardly usable anymore due to very slow rendering
  • Question: Is this desired/acceptable behavior for large apps, and if so, what is the recommendation to not experience such problems?

The whole story:
We have a fairly large OpenUi5 application with over 150 views, which we have recently been modernizing in preparation for OpenUi5 2.0.
The first steps were to replace all JSON views with XML views, upgrade the Ui5 version from 1.71 to 1.136, and start outsourcing parts of the UI to components. Recently, the following problem has arisen:
When a user navigates to many areas of the application, performance decreases over time. At a certain point, this makes the application unusable.
What we have found out about this:
Unlike JSON views, XML views use preserve logic, which places DOM elements in an invisible area for reuse. However, this area is never “cleaned up,” so more and more DOM elements accumulate over time. When the number of elements reaches a critical value (for us, approximately 20k so far), the problem described above occurs.
Since this problem only occurs in very large monolithic applications, I am unfortunately unable to provide an MRE. Therefore, I have the following questions:

  1. Is the behavior described intentional or at least acceptable?
  2. If so, is it possible (and sensible) to disable preserve or to clean up manually at certain times?
  3. What is the expected number of DOM elements for applications structured according to best practice approaches?
  4. What is the recommended approach for large applications to avoid such problems?

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions