TYPO3 v12/v13 Enterprise Caching: Redis-Backend gegen langsame Seitenaufrufe

Praxis-Optimierung für TYPO3 Enterprise-Websites im DACH-Raum: Verlagerung des Caching-Frameworks von der MySQL-Datenbank in Redis zur Beseitigung von TTFB-Verzögerungen.

TYPO3 ist im deutschsprachigen Raum das Rückgrat unzähliger Hochschulen, Konzerne und öffentlicher Institutionen. Das mächtige integrierte Caching-Framework speichert Cache-Einträge in Standardinstallationen jedoch direkt in relationalen Tabellen der MySQL- oder MariaDB-Datenbank (cf_cache_pages, cf_cache_rootline).

Bei großen Seitenbäumen mit Tausenden Unterseiten und mehrsprachigen Inhalten führt dies zu massiven Tabellen-Sperren (Table Locks), Fragmentierung und Time to First Byte (TTFB) Werten von über 1.500 Millisekunden.

Hier ist die praxiserprobte Anleitung, um TYPO3 mit einem performanten Redis In-Memory Caching Backend auszustatten.


1. Das Problem: Datenbank-Überlastung durch cf_cache_*

Überprüfen Sie den Zustand der Caching-Tabellen in Ihrer MySQL-Datenbank:

SELECT table_name, round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` 
FROM information_schema.TABLES 
WHERE table_schema = 'typo3_db' AND table_name LIKE 'cf_%';

Häufig belegen Caching-Tabellen mehrere Gigabyte an Daten. Jeder Seitenaufruf erzeugt aufwändige SELECT- und UPDATE-Queries, die den I/O-Durchsatz Ihrer SSDs blockieren.


2. Redis-Anbindung in system/additional.php (oder LocalConfiguration.php)

Wir leiten die speicherintensiven Caches pages und hash direkt an eine lokale Redis-Instanz weiter:

<?php
// config/system/additional.php

$redisHost = '127.0.0.1';
$redisPort = 6379;

// 1. Pages Cache nach Redis
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['pages']['backend'] = 
    \TYPO3\CMS\Core\Cache\Backend\RedisCacheBackend::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['pages']['options'] = [
    'hostname' => $redisHost,
    'port' => $redisPort,
    'database' => 0,
    'compression' => true,
    'defaultLifetime' => 86400, // 24 Stunden
];

// 2. Hash Cache nach Redis
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['hash']['backend'] = 
    \TYPO3\CMS\Core\Cache\Backend\RedisCacheBackend::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['hash']['options'] = [
    'hostname' => $redisHost,
    'port' => $redisPort,
    'database' => 1,
    'compression' => true,
];

// 3. Rootline Cache nach Redis
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['rootline']['backend'] = 
    \TYPO3\CMS\Core\Cache\Backend\RedisCacheBackend::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['rootline']['options'] = [
    'hostname' => $redisHost,
    'port' => $redisPort,
    'database' => 2,
];

3. TypoScript Optimierung: Keine uncached User-Functions im Header

Häufige Ursache für cache-brechende Latenzen in TYPO3 sind falsch deklarierte TypoScript-Objekte:

# ❌ Schlecht: USER_INT zwingt TYPO3, die Seite jedes Mal dynamisch neu zu rendern!
page.headerData.10 = USER_INT
page.headerData.10.userFunc = Vendor\Ext\Helper->renderTracking

#  Richtig: Standard USER-Objekt verwenden oder asynchron per Fetch API nachladen
page.headerData.10 = USER
page.headerData.10.userFunc = Vendor\Ext\Helper->renderTracking

4. Cache leeren & Speicher verifizieren

# TYPO3 Caches über die Konsole leeren
./vendor/bin/typo3 cache:flush

# Prüfen, ob Redis Schlüssel speichert
redis-cli -n 0 DBSIZE
# Zeigt die Anzahl der aktiven gecachten TYPO3-Seiten im RAM

5. Das Ergebnis: Stabile Millisekunden-Performance

Messwert TYPO3 Standard (DB Cache) Mit Redis Caching Backend
Seitenabruf TTFB 1.480 ms 35 ms
MySQL IOPS-Auslastung 680 IOPS (Dauerlast) 24 IOPS
Server-Gleichzeitigkeit Max. 30 User parallel 1.200+ User ohne Verlangsamung

Das System reagiert verzögerungsfrei, während die Datenbank vollständig von transienten Cache-Lasten befreit wird.


🔗 Zusammenhängende Systemdiagnosen & Infrastruktur-Geflecht:

Server- und Performance-Engpässe treten selten isoliert auf. Origin-Server-Latenzen, Datenbankstrukturen und Frontend-Metriken greifen direkt ineinander:

🛠️ Engineering Next Step

Benötigen Sie direkte Implementierung auf Ihrem Server?

Eingriffe in Serverkonfigurationen, Datenbank-Indizierung oder JavaScript-Optimierungen auf Produktivsystemen bergen Ausfallrisiken. Wenn Sie eine risikofreie Fehlerbehebung ohne Ausfallzeiten durch einen erfahrenen Systemingenieur bevorzugen, übernehme ich diese Anpassung direkt unter unserem Result-First, Fair-Pay Modell.

Gezielte Fehlerbehebung anfordern →
✓ Zahlung nur bei Erfolg•✓ Kein Ausfallrisiko•✓ Direkte Ausführung durch Ingenieur
Damar Nurvianto - Lead Systems Auditor
💬 Direkter Technischer Desk • WhatsApp
Damar Nurvianto • Lead Systems Auditor

Akutes technisches Problem oder Server-Fehler?

Senden Sie Ihren Terminal-Log, Stack-Trace oder Ihre Server-URL jederzeit — 7 Tage die Woche. Reine asynchrone Text-Diagnose direkt mit Senior Systems Auditor Damar. Keine unerwünschten Telefonanrufe.

Fehler-Log via WhatsApp senden &rarr;Drop Log 24/7 • No Calls