perf: Add inventory caching for interlink resolution#1152
Closed
CybotTM wants to merge 2 commits into
Closed
Conversation
Introduces CachingJsonLoader that decorates JsonLoader with: - File-based caching with configurable TTL (default 1 hour) - In-memory caching for current request deduplication - Parallel prefetch capability for bulk inventory loading - ~53% render time improvement for interlink-heavy docs Cache is stored in system temp directory with xxh128 URL hashing. PHP 8.1 compatible (no typed constants or #[\Override]).
This was referenced Jan 23, 2026
Change 0755 to 0o755 for code style compliance.
Contributor
Author
|
Closing - moved upstream to phpDocumentor/guides PR #1295. The caching logic is not TYPO3-specific and benefits all users of phpDocumentor/guides. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Introduces
CachingJsonLoaderthat decoratesJsonLoaderto cache inventory files locally, significantly reducing render time for documentation with many interlinks.Features
Performance Impact
~53% render time improvement for interlink-heavy documentation (measured on TYPO3 core docs).
Technical Details
CachingJsonLoaderwraps existingJsonLoader#[\Override]){sys_temp_dir}/typo3-guides-inventory-cache/Part of Performance Initiative
This is Phase 1.1 of the performance optimization initiative tracked in #1143.
Upstream dependencies (phpdocumentor/guides):
Test plan