Task #57594
Epic #55070: Workpackages
Epic #55065: WP: Overall System Performance (Backend and Frontend)
Epic #55656: Optimize overall Extbase performance
Optimize ReflectionService Cache handling
100%
Description
- it doesn't support nested Extensions (#12518)
- the cache data for main extensions (e.g. fluid/extbase) are redundant cached and e.g. are not reused from different extensions on one page (performance)
- some Reflection evaluation is missing, that it could be used by the ClassInfoFactory (performance)
Subtasks
Related issues
Associated revisions
[!!!][TASK] Replace ClassInfo with ClassSchema
Extbase came along with two main caches for reflection data.
extbase_reflection and extbase_object. The latter mostly stored
information that were relevant to the dependency injection, like
inject methods and properties and constructor parameters. The
information was gathered by actual reflection and by analysing
doc blocks of properties and methods.
extbase_reflection stored similar reflection and doc block data
about objects but mainly for the parts outside dependency injection.
For example, the validation resolver used it to identify @validate
tags, the ActionController used it to identity which properties not
to validate. The ORM also used it a lot to find annotated types via
@var and so on.
There were a few issues with these two approaches:
- A lot of redundant data was fetched
- Data was fetched multiple times at different locations
- The extbase_reflection cache was stored each plugin seperately,
resulting in a lot of redundant cache data for each plugin cache
- At a lot of places, the reflection service was used to reflect
objects, but the data wasn't cached or taken from a cache resulting
in performance drawbacks
This patch solves these issues with several approaches:
- The extbase_object cache has been removed completely and all
necessary information about objects, mainly @inject stuff, is
now fetched from the ReflectionService as well.
- The ReflectionService does still create ClassSchema instances
but these were improved a lot. All necessary information is now
gathered during the instantiation of ClassSchema instances. That
means that all necessary data is fetched once and then it can be
used everywhere making any further reflection superfluous.
- As runtime reflection has been removed completey, along with it
several reflection classes, that analyzed doc blocks, have been
removed as well. These are no longer necessary.
- The extbase_reflection cache is no longer plugin based and will
no longer be stored in the database in the first place. Serialized
ClassSchema instances will stored in typo3temp.
Releases: master
Resolves: #57594
Resolves: #55654
Change-Id: I93b905c85c4f28775f014ca8b585347bf6f1e7d3
Reviewed-on: https://review.typo3.org/54381
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Susanne Moog <susanne.moog@typo3.org>
Tested-by: Susanne Moog <susanne.moog@typo3.org>
[FOLLOWUP][!!!][TASK] Replace ClassInfo with ClassSchema
Increase test coverage of ClassSchema and ReflectionService
Releases: master
Resolves: #57594
Resolves: #55654
Change-Id: If413dc0b428f94dffef13e1875e3a7af4f9939b7
Reviewed-on: https://review.typo3.org/54482
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Reviewed-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
Tested-by: Jigal van Hemert <jigal.van.hemert@typo3.org>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
History
#1
Updated by Marc Bastian Heinrichs over 5 years ago
- Category set to Extbase
#2
Updated by Alexander Opitz about 4 years ago
- Target version changed from next-patchlevel to 8 LTS
#3
Updated by Benni Mack over 2 years ago
- Target version changed from 8 LTS to Candidate for patchlevel
#4
Updated by Gerrit Code Review about 2 years ago
- Status changed from Accepted to Under Review
Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#5
Updated by Gerrit Code Review about 2 years ago
Patch set 2 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#6
Updated by Gerrit Code Review about 2 years ago
Patch set 3 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#7
Updated by Gerrit Code Review about 2 years ago
Patch set 4 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#8
Updated by Gerrit Code Review about 2 years ago
Patch set 5 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#9
Updated by Gerrit Code Review about 2 years ago
Patch set 6 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#10
Updated by Gerrit Code Review about 2 years ago
Patch set 7 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#11
Updated by Gerrit Code Review about 2 years ago
Patch set 8 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#12
Updated by Gerrit Code Review about 2 years ago
Patch set 9 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#13
Updated by Alexander Schnitzler about 2 years ago
- Target version changed from Candidate for patchlevel to 9.0
- TYPO3 Version changed from 6.2 to 8
- PHP Version set to 7.0
#14
Updated by Gerrit Code Review about 2 years ago
Patch set 10 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#15
Updated by Gerrit Code Review about 2 years ago
Patch set 11 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#16
Updated by Gerrit Code Review about 2 years ago
Patch set 12 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#17
Updated by Gerrit Code Review about 2 years ago
Patch set 13 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#18
Updated by Gerrit Code Review about 2 years ago
Patch set 14 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#19
Updated by Gerrit Code Review about 2 years ago
Patch set 15 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#20
Updated by Gerrit Code Review about 2 years ago
Patch set 16 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#21
Updated by Gerrit Code Review about 2 years ago
Patch set 17 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#22
Updated by Gerrit Code Review about 2 years ago
Patch set 18 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#23
Updated by Gerrit Code Review about 2 years ago
Patch set 19 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#24
Updated by Gerrit Code Review about 2 years ago
Patch set 20 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#25
Updated by Gerrit Code Review about 2 years ago
Patch set 21 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#26
Updated by Gerrit Code Review about 2 years ago
Patch set 22 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54381
#27 Updated by Anonymous about 2 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset 73b5e17d1807bc0e9bb2a11dc5f2affc65b304bd.
#28
Updated by Gerrit Code Review about 2 years ago
- Status changed from Resolved to Under Review
Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/54482
#29 Updated by Anonymous about 2 years ago
- Status changed from Under Review to Resolved
Applied in changeset d9d8f19a0b1ba36bd35dca77afc1047b50f20de9.
#30
Updated by Benni Mack about 1 year ago
- Status changed from Resolved to Closed