Project

General

Profile

Actions

Bug #96309

closed

flushCachesByTags doesn't clear correctly the page cache

Added by Olivier Massot over 2 years ago. Updated over 1 year ago.

Status:
Closed
Priority:
Should have
Assignee:
-
Category:
Caching
Target version:
-
Start date:
2021-12-09
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
10
PHP Version:
7.2
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Our Typo3 instance hosts thousands of websites, which is why we can not afford to clear the whole cache every time a website admin will change a value in the TS constants of its website, like the name of this website for example.

For this reason, we implemented a custom CacheManager that does more or less the same thing that the CacheService from extbase.

When asked to flush the cache of a website, our cache manager get the root uid of the website, then recursively list all of the website's pages, and build an array of the form:

['pageId_1', 'pageId_2', ...]

It finally call the TYPO3\CMS\Core\Cache\CacheManager like this:

$cacheManager->flushCachesByTags($tags);

But this command alone wasn't enough to force the page to rerender.

After hours of investigations, I found out adding these lines did the job, even if I'm unable to understand why:

        $connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
        $cnn = $connectionPool->getConnectionByName('Default');
        $cnn->beginTransaction();
        $sql = "update typo3.cache_hash h inner join typo3.cache_hash_tags t on h.id = t.id
                set h.expires = 0
                where t.tag = 'ident_TS_TEMPLATE';";
        $stmt = $cnn->prepare($sql);
        $stmt->executeQuery();
        $cnn->commit();

We are using Typo3 10.4.21 with php 7.2
The pages are designed with fluid
We're using custom viewhelpers and VHS (6.0.5) viewhelpers on these pages
We're using flux (9.5.0)

Actions

Also available in: Atom PDF