Project

General

Profile

Actions

Feature #90146

closed

TypoScript includes and imports are a real performance bottleneck and should be cached (in a prod environment)

Added by B. Kausch about 4 years ago. Updated over 1 year ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
TypoScript
Start date:
2020-01-18
Due date:
% Done:

100%

Estimated time:
PHP Version:
Tags:
Complexity:
medium
Sprint Focus:

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.


Related issues 2 (0 open2 closed)

Related to TYPO3 Core - Feature #97816: New TypoScript parserClosed2022-06-27

Actions
Related to TYPO3 Core - Bug #100205: @import lost the flexibility from Symfony FinderClosed2023-03-17

Actions
Actions #1

Updated by B. Kausch about 4 years ago

Typo3 Version I worked with: 9.5

Actions #2

Updated by Benni Mack over 3 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.

Actions #3

Updated by Benni Mack over 3 years ago

  • Status changed from New to Needs Feedback
Actions #4

Updated by Christian Kuhn almost 2 years ago

Actions #5

Updated by Christian Kuhn almost 2 years ago

fixed by the new parser with a more elegant cache layer.

Actions #6

Updated by Gerrit Code Review almost 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

Actions #7

Updated by Gerrit Code Review almost 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

Actions #8

Updated by Gerrit Code Review almost 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

Actions #9

Updated by Gerrit Code Review almost 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

Actions #10

Updated by Christian Kuhn almost 2 years ago

  • Status changed from Under Review to Resolved
  • % Done changed from 0 to 100
Actions #11

Updated by Benni Mack over 1 year ago

  • Status changed from Resolved to Closed
Actions #12

Updated by Christian Kuhn about 1 year ago

  • Related to Bug #100205: @import lost the flexibility from Symfony Finder added
Actions

Also available in: Atom PDF