Skip to content
Snippets Groups Projects
Commit 0a296693 authored by Benjamin Franzke's avatar Benjamin Franzke Committed by Andreas Kienast
Browse files

[TASK] Utilize PackageDependentCacheIdentifier in TsConfigTreeBuilder

The cache identifier of TSCconfig strings is now hashed with the current
TYPO3 version number in preparation for an upcoming cache-content
change (#79737) which is to be included in an upcoming v12 release.

Resolves: #103839
Related: #79737
Releases: main, 12.4
Change-Id: I0864deddc350c6775c5cfe42fc05cfa1b974050e
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84279


Reviewed-by: default avatarStefan Bürk <stefan@buerk.tech>
Tested-by: default avatarcore-ci <typo3@b13.com>
Reviewed-by: default avatarAndreas Kienast <a.fernandez@scripting-base.de>
Tested-by: default avatarStefan Bürk <stefan@buerk.tech>
Tested-by: default avatarAndreas Kienast <a.fernandez@scripting-base.de>
parent 491c9ff4
Branches
Tags
No related merge requests found
......@@ -21,6 +21,7 @@ use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
use TYPO3\CMS\Core\Cache\Frontend\PhpFrontend;
use TYPO3\CMS\Core\EventDispatcher\EventDispatcher;
use TYPO3\CMS\Core\Exception\SiteNotFoundException;
use TYPO3\CMS\Core\Package\Cache\PackageDependentCacheIdentifier;
use TYPO3\CMS\Core\Package\PackageManager;
use TYPO3\CMS\Core\Site\Set\SetRegistry;
use TYPO3\CMS\Core\Site\SiteFinder;
......@@ -59,8 +60,11 @@ final class TsConfigTreeBuilder
$collectedUserTsConfigArray = [];
$gotPackagesUserTsConfigFromCache = false;
$cacheIdentifier = (new PackageDependentCacheIdentifier($this->packageManager))
->withPrefix('usertsconfig-packages-strings')
->toString();
if ($cache) {
$collectedUserTsConfigArrayFromCache = $cache->require('usertsconfig-packages-strings');
$collectedUserTsConfigArrayFromCache = $cache->require($cacheIdentifier);
if ($collectedUserTsConfigArrayFromCache) {
$gotPackagesUserTsConfigFromCache = true;
$collectedUserTsConfigArray = $collectedUserTsConfigArrayFromCache;
......@@ -84,7 +88,7 @@ final class TsConfigTreeBuilder
}
}
}
$cache?->set('usertsconfig-packages-strings', 'return unserialize(\'' . addcslashes(serialize($collectedUserTsConfigArray), '\'\\') . '\');');
$cache?->set($cacheIdentifier, 'return unserialize(\'' . addcslashes(serialize($collectedUserTsConfigArray), '\'\\') . '\');');
}
foreach ($collectedUserTsConfigArray as $key => $typoScriptString) {
$includeTree->addChild($this->getTreeFromString((string)$key, $typoScriptString, $tokenizer, $cache));
......@@ -142,8 +146,11 @@ final class TsConfigTreeBuilder
): array {
$collectedPagesTsConfigArray = [];
$gotPackagesPagesTsConfigFromCache = false;
$cacheIdentifier = (new PackageDependentCacheIdentifier($this->packageManager))
->withPrefix('pagestsconfig-packages-strings')
->toString();
if ($cache) {
$collectedPagesTsConfigArrayFromCache = $cache->require('pagestsconfig-packages-strings');
$collectedPagesTsConfigArrayFromCache = $cache->require($cacheIdentifier);
if ($collectedPagesTsConfigArrayFromCache) {
$gotPackagesPagesTsConfigFromCache = true;
$collectedPagesTsConfigArray = $collectedPagesTsConfigArrayFromCache;
......@@ -167,7 +174,7 @@ final class TsConfigTreeBuilder
}
}
}
$cache?->set('pagestsconfig-packages-strings', 'return unserialize(\'' . addcslashes(serialize($collectedPagesTsConfigArray), '\'\\') . '\');');
$cache?->set($cacheIdentifier, 'return unserialize(\'' . addcslashes(serialize($collectedPagesTsConfigArray), '\'\\') . '\');');
}
return $collectedPagesTsConfigArray;
}
......@@ -201,7 +208,10 @@ final class TsConfigTreeBuilder
return [];
}
$cacheIdentifier = 'pagestsconfig-site-' . $rootSite->getIdentifier();
$cacheIdentifier = (new PackageDependentCacheIdentifier($this->packageManager))
->withPrefix('pagestsconfig-site')
->withAdditionalHashedIdentifier($rootSite->getIdentifier())
->toString();
$pageTsConfig = $cache?->require($cacheIdentifier) ?: null;
if ($pageTsConfig === null) {
......@@ -267,7 +277,10 @@ final class TsConfigTreeBuilder
?PhpFrontend $cache = null
): TsConfigInclude {
$lowercaseName = mb_strtolower($name);
$identifier = $lowercaseName . '-' . hash('xxh3', $typoScriptString);
$identifier = (new PackageDependentCacheIdentifier($this->packageManager))
->withPrefix($lowercaseName)
->withAdditionalHashedIdentifier($typoScriptString)
->toString();
if ($cache) {
$includeNode = $cache->require($identifier);
if ($includeNode instanceof TsConfigInclude) {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment