Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUGFIX] Mitigate unrelated page traversal for glossary lookup #335

Merged
merged 1 commit into from
Jun 10, 2024

Conversation

NarkNiro
Copy link
Member

@NarkNiro NarkNiro commented Jun 7, 2024

Based on the concept the matching glossaries for the current site root tree should be used for translation process. Glossaries are managed on default pages with the glossaries module attached, thus are free to be defined within the page tree structure. Using a page traversal approach from the detected site root becomes really costly as it traverse the full page tree beneath the matched site root, thus becoming quickly quite costly.

Albeit not the best approach, retrieving pages with the module attached and using the SiteFinder and therefore the rootline to sort out module pages not included for the site root reduces the traversed and retrieved pages white a lot.

Note: With dropping TYPO3 v12 support it would be possible to use handcrafted common table expressions to further optimize that lookup and with TYPO3 v13 at least TYPO3 Core internal API may be available.

This change modifies the glossary id lookup method to exchange the pagetraversal approach with a flat record list rootline check approach as a first, quick and non breaking improvement. Instances not using the glossary feature avoids the recursive traversal at all with this implementation.

Resolve #334

sbuerk
sbuerk previously approved these changes Jun 7, 2024
@sbuerk sbuerk self-requested a review June 7, 2024 14:40
@sbuerk sbuerk dismissed their stale review June 7, 2024 14:40

to early

Based on the concept the matching glossaries for the
current site root tree should be used for translation
process. Glossaries are managed on default pages with
the `glossaries` module attached, thus are free to be
defined within the page tree structure. Using a page
traversal approach from the detected site root becomes
really costly as it traverse the full page tree beneath
the matched site root, thus becoming quickly quite costly.

Albeit not the best approach, retrieving pages with the
module attached and using the SiteFinder and therefore
the rootline to sort out module pages not included for
the site root reduces the traversed and retrieved pages
white a lot.

Note: With dropping TYPO3 v12 support it would be possible
to use handcrafted common table expressions to further
optimize that lookup and with TYPO3 v13 at least TYPO3 Core
internal API may be available.

This change modifies the glossary id lookup method to
exchange the pagetraversal approach with a flat record
list rootline check approach as a first, quick and non
breaking improvement. Instances not using the glossary
feature avoids the recursive traversal at all with this
implementation.
@sbuerk sbuerk merged commit da5540f into main Jun 10, 2024
9 checks passed
@sbuerk sbuerk deleted the bugfix/334 branch June 10, 2024 10:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] Performance problem with latest version in large site
2 participants