Inhaltsverzeichnis

Caching Framework

Ich bin erst seit Kurzem (Mitte 2011) auf das Caching Framework von TYPO3 aufmerksam geworden und das obwohl das Caching Framework schon seit TYPO3 4.3 integriert ist. Zu allererst ist mir eine neue Option im INSTALL_TOOL aufgefallen "useCachingFramework". Erklärung "Enable this if you want to use the caching framework by default for the core caches cache_pages, cache_pagesection and cache_hash." Öhöm...wird TYPO3 durch die Aktivierung dieser Option jetzt schneller? Steht da nicht...keine Ahnung. Irgendwann kam dann bei mm_forum 1.9.1 in Verbindung mit TYPO3 4.5 diese Fehlermeldung:

A cache with identifier "cache_hash" does not exist.

Abhilfe schaft das Setzen von useCachingFramework im INSTALL_TOOL. Ich denke es wird mal Zeit sich das Caching Framework genauer anzuschauen:

Was ist das Caching Framework

Das Caching Framework ist die Ablösung des bisherigen Cachingsystems von TYPO3, das NUR in die TYPO3-eigenen Datenbanktabellen schreiben kann. Das neue System wurde für FLOW3 entwickelt und wurde extra für die 4er Version zurückportiert und kann datenbankunabhängige Cachingsysteme verwenden wie z.B. ein Caching im Arbeitsspeicher oder anderen speziell für's Caching ausgelegte Systeme.

Brauche ich das Caching Framework?

Im TYPO3 Wiki wird das so erklärt, dass das Caching Framework gerade für Webseiten mit enorm vielen Anfragen Sinn macht. Auf der anderen Seite habe ich gelesen, dass das Caching Framework eh in TYPO3 4.6 per Default aktiviert ist.

Ist das Caching Framework schneller?

Wenn Ihr einfach nur den Haken setzt mag ich zu bezweifeln, dass das Aufrufen der Webseiten dadurch schneller wird. Folgende Erklärung dazu:

Sucht mal in der Datei t3lib/config_default.php nach folgenden Zeilen:

'caching' => array(
    'cacheFrontends' => array(
        't3lib_cache_frontend_VariableFrontend' => 't3lib_cache_frontend_VariableFrontend',
        't3lib_cache_frontend_StringFrontend'   => 't3lib_cache_frontend_StringFrontend',
        't3lib_cache_frontend_PhpFrontend'      => 't3lib_cache_frontend_PhpFrontend',
    ),
    'cacheBackends' => array(
        't3lib_cache_backend_DbBackend'              => 't3lib_cache_backend_DbBackend',
        't3lib_cache_backend_FileBackend'            => 't3lib_cache_backend_FileBackend',
        't3lib_cache_backend_MemcachedBackend'       => 't3lib_cache_backend_MemcachedBackend',
        't3lib_cache_backend_PdoBackend'             => 't3lib_cache_backend_PdoBackend',
        't3lib_cache_backend_RedisBackend'           => 't3lib_cache_backend_RedisBackend',
        't3lib_cache_backend_ApcBackend'             => 't3lib_cache_backend_ApcBackend',
        't3lib_cache_backend_NullBackend'            => 't3lib_cache_backend_NullBackend',
        't3lib_cache_backend_TransientMemoryBackend' => 't3lib_cache_backend_TransientMemoryBackend',
    ),
    'cacheConfigurations' => array(
        'cache_hash' => array(
            'frontend' => 't3lib_cache_frontend_VariableFrontend',
            'backend' => 't3lib_cache_backend_DbBackend',
            'options' => array(
                'cacheTable' => 'cachingframework_cache_hash',
                'tagsTable' => 'cachingframework_cache_hash_tags',
            )
        ),
        'cache_pages' => array(
            'frontend' => 't3lib_cache_frontend_VariableFrontend',
            'backend' => 't3lib_cache_backend_DbBackend',
            'options' => array(
                'cacheTable' => 'cachingframework_cache_pages',
                'tagsTable' => 'cachingframework_cache_pages_tags',
            )
        ),
        'cache_pagesection' => array(
            'frontend' => 't3lib_cache_frontend_VariableFrontend',
            'backend' => 't3lib_cache_backend_DbBackend',
            'options' => array(
                'cacheTable' => 'cachingframework_cache_pagesection',
                'tagsTable' => 'cachingframework_cache_pagesection_tags',
            )
        )
    )
),
'useCachingFramework' => FALSE,

Hier seht Ihr die Defaulteinstellungen für das neue Caching Framework. Wichtig für diese Frage sind die cacheConfigurations für die Tabellen cache_hash, cache_pages und cache_pagesections. Ihr seht, dass für alle Cachetabellen, das Backend "t3lib_cache_backend_DbBackend" verwendet wird. Wie Ihr später lesen werdet wird bei diesem Backend wie schon im früheren Cachingsystem auch wieder mit der TYPO3-eigenen Datenbank gearbeitet. Einen Geschwindigkeitsschub schließe ich deshalb in der Defaultkonfiguration aus.

Das Backend t3lib_cache_backend_DbBackend bringt aber noch die Optionen compression und compressionLevel mit. Mit einem entsprechend leistungsstarken Server könnte ich mir unter Verwendung von compression = 1 allerdings schon vorstellen, einen kleinen Geschwindigkeitsschub zu erhalten.

Caching Framework einschalten

Im INSTALL_TOOL gibt es die Einstellung useCachingFramework. Markiert die Checkbox und speichert die neue Option ab.

Im TYPO3 Wiki habe ich noch gelesen, dass danach die Cachedaten aus den alten Cachetabellen (cache_hash, cache_pages, cache_pagesection) gelöscht werden sollen. Diese würden dort nur Speicherplatz belegen, da der "neue" Cache in den Tabellen cachingframework_cache_hash, cachingframework_cache_pages, cachingframework_cache_pagesection abgespeichert wird.