Feature #90146
closedTypoScript includes and imports are a real performance bottleneck and should be cached (in a prod environment)
100%
Description
I have debugged my recent project on a managed server, because the request times were just too high. What I found, came by surprise for me. TypoScript includes and imports are reavluated and read from the filesystem on EVERY request (see processIncludes). Every default setup uses the static template from fluid_styled_content, which will include about 30 files. I control my root templates in a VCS, so add 10 more files. Meaning: On every request 40 files are read from the filesystem! The filesystem is slow. The parse process of TypoScript shoule be fast. But with this many reads from the drive, I loose 10ms on my dev system and 50ms on the managed server. Today, the whole rendering process until the first byte is sent should take 50ms... Here is a chance to improve the performance of Typo3 in a noticeable way.
The hashed import/include statement in the first cycle (includeFile) should be used as a cache identifier to store the complete TypoScript of an top level import/include. The caching should only be active, when the application context is Development
or a config flag is set.
Updated by Benni Mack over 4 years ago
Thank for you for your report!
Can you tell me if you're logged in to the TYPO3 Backend in the same browser session or this also happens for every frontend request in general?
In general (from my findings), TYPO3 Frontend goes through all includes and checks their last-modification time, which is then included in the rowSum value. I don't believe this has changed since then, but I'm curious to learn more about it, but from the top of my head, I can't remember that we've done changes in that area for v10.
Updated by Benni Mack over 4 years ago
- Status changed from New to Needs Feedback
Updated by Christian Kuhn over 2 years ago
- Related to Feature #97816: New TypoScript parser added
Updated by Christian Kuhn over 2 years ago
fixed by the new parser with a more elegant cache layer.
Updated by Gerrit Code Review over 2 years ago
- Status changed from Needs Feedback to Under Review
Patch set 7 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/74987
Updated by Gerrit Code Review over 2 years ago
Patch set 8 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/74987
Updated by Gerrit Code Review over 2 years ago
Patch set 9 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/74987
Updated by Gerrit Code Review over 2 years ago
Patch set 10 for branch main of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/74987
Updated by Christian Kuhn over 2 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset 09c61884bf2f15b0f209f8b177268620fc77cc8a.
Updated by Christian Kuhn over 1 year ago
- Related to Bug #100205: @import lost the flexibility from Symfony Finder added