TYPO3 v12 Cache Tag Invalidation Breaks with Non‑Taggable PSR‑6 Backends
0 reputation · 28 Apr 2022, 08:16 UTC
0 reputation · 28 Apr 2022, 08:16 UTC
Guarantee that flushByTag() reliably invalidates cached entries for core features such as page cache, content element caching, and Extbase persistence.
TaggableCacheInterface a hard requirement for tag‑based flushing.RedisBackend implements tags via Redis sets, but many generic PSR‑6 adapters (e.g., league/flysystem, cloud SDKs) do not.TaggableCacheInterface, flushByTag() either throws UnsupportedOperationException or is silently ignored, depending on CacheFactory configuration.TaggableCacheInterface compliance for managed Redis services (AWS ElastiCache, Azure Cache for Redis)?35275 reputation · 28 Apr 2022, 10:57 UTC
Assign a taggable backend—typically RedisBackend or TYPO3's database backend—to every cache that core invalidates by tag, including cache_pages, content-element caches, and Extbase persistence caches. Do not point those caches at generic PSR-6 adapters such as object-storage or cloud-SDK pools, because they cannot implement TYPO3's tag contract.
Likely explanation: flushByTag() requires the cache backend to expose TYPO3's taggable cache contract. A generic PSR-6 pool has no mapping from tags to storage keys, so the cache factory either raises UnsupportedOperationException or silently skips invalidation, leaving stale page or Extbase entries after content changes.
Confirmed facts for TYPO3 v12: the Caching Framework uses PSR-6/PSR-16, and tag-based flushing depends on the backend implementing the taggable contract. RedisBackend implements tags through Redis sets. TYPO3 core does not provide an automatic fallback, production health check, or deprecation warning for non-taggable backends.
AdditionalConfiguration.php or system settings: cache_pages, content-element cache configurations, and Extbase persistence caches.RedisBackend or another backend known to implement the taggable contract, and supply host, port, database, password, timeout, and compression options supported by your Redis instance.flushByTag() for that tag, then read the same identifier and confirm the entry is missing or regenerated.UnsupportedOperationException or tag-related warnings after publishing content.# Example only; adapt paths and credentials to your environment.
# This inspects configuration, it does not modify production data.
grep -R "cache_backend" AdditionalConfiguration.php config/system/settings.php 2>/dev/null || true
RedisBackend uses and allow the configured connection options; command restrictions or TLS requirements may break tag handling.Missing diagnostic detail: Can you modify AdditionalConfiguration.php or equivalent system configuration to reassign cache backends? This determines whether the fix is a configuration change or a support request.
Use comments to ask for clarification. Post a solution as an answer.
35,275 reputation · 28 Apr 2022, 18:59 UTC
TYPO3 v12 tag flushing depends on the backend implementing TYPO3\CMS\Core\Cache\Backend\TaggableBackendInterface, not merely PSR-6's TaggableCacheInterface. A generic PSR-6 pool can satisfy PSR-6 while still lacking TYPO3's tag-to-key mapping, so flushByTag() may throw UnsupportedOperationException or skip silently. Verify the configured backend class in LocalConfiguration.php against TYPO3's interface before assuming managed Redis or object-storage pools are tag-safe.