[BUGFIX] Speed up FormEngine with hundreds of categories
FormEngine's TreeRendering for categories utilizes the TreeDataProvider logic, which is handed over a list of available items loaded by FormEngine's AbstractItemProvider. These records have already been validated and a full record was already loaded by FormEngine at this point. The TreeDataProvider construct then fetches ALL records again, as it only works with the "IDs", but not with already loaded full rows. This makes the construct expensive. It needs a bigger overhaul. To mitigate the performance impact of bigger category trees, the patch applies a hack to suppress loading single category rows multiple times by handing them over from FormEngine to the TreeDataProvider construct. As this change is also backported to 11.5, the optimizations are only done for type=category to minimize impact for other Tree usages. Resolves: #84558 Resolves: #90398 Resolves: #97003 Resolves: #76581 Resolves: #98807 Releases: main, 11.5 Change-Id: Ief183f1673d3a17036ca5e68c62dc18a4277def1 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/76443 Tested-by:core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Oliver Bartsch <bo@cedev.de> Tested-by:
Susanne Moog <look@susi.dev> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Susanne Moog <look@susi.dev> Reviewed-by:
Oliver Bartsch <bo@cedev.de> Reviewed-by:
Benni Mack <benni@typo3.org>
Showing
- typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php 24 additions, 12 deletions...nd/Classes/Form/FormDataProvider/AbstractItemProvider.php
- typo3/sysext/backend/Classes/Form/FormDataProvider/TcaCategory.php 17 additions, 2 deletions...ext/backend/Classes/Form/FormDataProvider/TcaCategory.php
- typo3/sysext/backend/Classes/Tree/TreeNode.php 16 additions, 1 deletiontypo3/sysext/backend/Classes/Tree/TreeNode.php
- typo3/sysext/core/Classes/Tree/TableConfiguration/AbstractTableConfigurationTreeDataProvider.php 15 additions, 0 deletions...figuration/AbstractTableConfigurationTreeDataProvider.php
- typo3/sysext/core/Classes/Tree/TableConfiguration/DatabaseTreeDataProvider.php 30 additions, 17 deletions...sses/Tree/TableConfiguration/DatabaseTreeDataProvider.php
- typo3/sysext/core/Tests/Unit/Tree/TableConfiguration/DatabaseTreeDataProviderTest.php 14 additions, 162 deletions.../Tree/TableConfiguration/DatabaseTreeDataProviderTest.php
Please register or sign in to comment