Task #45107
closedGet rid of loadTCA and simplify FE cache behavior
100%
Description
The frontend rendering aims to not load the full TCA including
columns settings to reduce rendering time for full cache pages.
This approach is ridiculous complex and using it is so hard to get
right for developers that even core patches in this area are
usually broken. The current situation is neither simple
nor transparent.
Currently, if no page cache entry exists during rendering, the whole
ext_tables.php are executed, the page is rendered and stuffed to
cache. While the full TCA is available at this point, it is reduced
to the 'ctrl' sections for the next run, without 'columns', and
stuffed to cache. On next access, the cache entry is used,
ext_tables.php and TCA is not fully loaded. This leads to all sort of
problems, if for example those pages contain USER_INT plugins that
rely on some TCA settings. Furthermore, it might happen, that
different plugins or the core then requires the ext_tables files more
than once, which leads to funny problems if some developer does not
know this and uses require_once instead of require inside
ext_tables.php. Issues like that are very hard to track down.
The current implementation relies on the methods TSFE->includeTCA(),
TSFE->getCompressedTCarray() and GeneralUtility->loadTCA(), where
especially includeTCA() with its parameter is so hard to understand
that it is impossible to use in a correct way without digging through
the content rendering for hours.
The patch obsoletes all three of the above methods. Instead, from now
on, the bootstrap in the frontend is configured to always load the
full TCA including columns sections, even in full cached context.
The only exception are eID scripts, but the existing API to load
additional TCA in the eID controller is modified to also load all.
On the downside, this patch costs around 30% of additional
performance for the rendering of full cached pages. As soon as there
is some USER_INT on a page, or if a page is not cached, the overhead
is around zero. So, this patch costs performance for 'simple' pages,
while it is of no effect for anything more complex.
The goal is to reduce developer headaches at this point and to
make the frontend rendering better predictable and more easy
to maintain. It is furthermore one step to implement a better
configuration handling in the long run.
Files
Updated by Gerrit Code Review over 11 years ago
- Status changed from New to Under Review
Patch set 1 for branch master has been pushed to the review server.
It is available at https://review.typo3.org/17978
Updated by Gerrit Code Review over 11 years ago
Patch set 2 for branch master has been pushed to the review server.
It is available at https://review.typo3.org/17978
Updated by Philipp Gampe over 11 years ago
- File ab-n100-c2-without-patch.txt ab-n100-c2-without-patch.txt added
- File ab-n100-c2-with-patch.txt ab-n100-c2-with-patch.txt added
- File siege-without-patch.txt siege-without-patch.txt added
- File siege-with-patch.txt siege-with-patch.txt added
This seems to have quite an effect on fully cached pages ... I would like to see some real world number of a bigger website with this patch.
I did some benchmarks with a fully cached page (IP, About TYPO3). The siege
benchmarks include a hit after rm typo3temp/Cache/*
and are run with -v -r 25 -b -c 2
.ab
is run with -n 100 -c 2
.
Updated by Gerrit Code Review over 11 years ago
Patch set 3 for branch master has been pushed to the review server.
It is available at https://review.typo3.org/17978
Updated by Gerrit Code Review over 11 years ago
Patch set 4 for branch master has been pushed to the review server.
It is available at https://review.typo3.org/17978
Updated by Tobias Liebig over 11 years ago
Could you briefly explain what so expensive for the performance (30% sound like a real huge impact) ? Can we do anything to improve that?
Updated by Christian Kuhn over 11 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset d7b5d829e7d9a3a6699803e5c7ea308e6b2f55ca.
Updated by Gerrit Code Review over 11 years ago
- Status changed from Resolved to Under Review
Patch set 1 for branch master_new has been pushed to the review server.
It is available at https://review.typo3.org/18612
Updated by Christian Kuhn over 11 years ago
- Status changed from Under Review to Resolved
Updated by Oliver Hader over 11 years ago
- Target version changed from 6.1.0 to 6.1.0-alpha1
Updated by Riccardo De Contardi almost 7 years ago
- Status changed from Resolved to Closed