Wie verwende ich APCu mit TYPO3?

Du möchtest die maximale Geschwindigkeit aus deiner TYPO3 Installation herausholen?
Damit TYPO3 optimal mit Performance Plus zusammenarbeitet, ist eine kleine Anpassung an der Konfiguration notwendig. Am einfachsten geht dies über das Kundencenter.

Wähle hier in der Projekte-Übersicht das gewünschte Projekt aus und gehe in die „Performance Plus-Oberfläche unterhalb von Tools. Das Kundencenter sucht nun automatisch nach TYPO3 Installationen in deinem Projekt und listet diese unterhalb der aktuellen Auslastung des OPCaches und APCu auf. Setze hier einfach den Haken bei APCu Caching aktivieren und klicke auf Konfigurieren
Die ausgewählte TYPO3 Installation nutzt den APCu schon wenige Sekunden später.

Mit Performance Plus von Mittwald das APCu Caching aktivieren und die maximale Geschwindigkeit aus deiner TYPO3 Installation herausholen.

Alternativ kannst du die Aktivierung des APCu auch manuell vornehmen. Lege dafür zunächst im typo3conf-Verzeichnis der gewünschten Installation eine Datei mit dem Namen MwCachingConfiguration.php und dem folgenden Inhalt an.

(ab Version 12.4 ist das Verzeichnis typo3conf/system, bzw. für Composer-Installationen config/system)

<?php

if (!function_exists('mw_setCacheBackend')) {
    function mw_setCacheBackend($backendClassName, $cacheName, $lifetime = NULL)
    {
        $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheName]['backend'] = $backendClassName;
        if (isset($lifetime))
        {
            $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheName]['options'] = array("defaultLifetime" => $lifetime);
        } else {
            $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations'][$cacheName]['options'] = array();
        }
    }
}

$mw_apcExtensionLoaded = extension_loaded('apc');
$mw_apcuExtensionLoaded = extension_loaded('apcu');
$mw_apcAvailable = $mw_apcExtensionLoaded || $mw_apcuExtensionLoaded;
$mw_apcEnabled = ini_get('apc.enabled') == TRUE;

if (method_exists('TYPO3\CMS\Core\Information\Typo3Version','getBranch') && method_exists('TYPO3\CMS\Core\Core\Environment','getContext')) {
    $get_version = new TYPO3\CMS\Core\Information\Typo3Version();
    $version = $get_version->getBranch();
    $context = TYPO3\CMS\Core\Core\Environment::getContext();
} else {
    $version = TYPO3_version;
    $context = TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext();
}

if (PHP_SAPI !== 'cli' && $context !== 'Development' && $mw_apcAvailable && $mw_apcEnabled) {
    $mw_backendClassName = $mw_apcExtensionLoaded ? 'TYPO3\\CMS\\Core\\Cache\\Backend\\ApcBackend'
        : 'TYPO3\\CMS\\Core\\Cache\\Backend\\ApcuBackend';
} else {
    $mw_backendClassName = 'TYPO3\\CMS\\Core\\Cache\\Backend\\FileBackend';
}

if (substr($version,0,2) === "10" || substr($version,0,2) === "11" || substr($version,0,2) === "12")
{
    mw_setCacheBackend($mw_backendClassName, 'hash');
    mw_setCacheBackend($mw_backendClassName, 'pages');
    mw_setCacheBackend($mw_backendClassName, 'pagesection', 2592000);
    mw_setCacheBackend($mw_backendClassName, 'rootline',2592000);
    mw_setCacheBackend($mw_backendClassName, 'imagesizes', 0);
} elseif ($version[0] === "9") {
    mw_setCacheBackend($mw_backendClassName, 'cache_hash');
    mw_setCacheBackend($mw_backendClassName, 'cache_pages');
    mw_setCacheBackend($mw_backendClassName, 'cache_pagesection', 2592000);
    mw_setCacheBackend($mw_backendClassName, 'cache_rootline',2592000);
    mw_setCacheBackend($mw_backendClassName, 'cache_imagesizes', 0);
    mw_setCacheBackend($mw_backendClassName, 'extbase_reflection', 0);
    mw_setCacheBackend($mw_backendClassName, 'extbase_datamapfactory_datamap', 0);
} elseif ($version[0] === "8" || $version[0] === "6") {
    mw_setCacheBackend($mw_backendClassName, 'cache_hash');
    mw_setCacheBackend($mw_backendClassName, 'cache_pages');
    mw_setCacheBackend($mw_backendClassName, 'extbase_datamapfactory_datamap');
    mw_setCacheBackend($mw_backendClassName, 'cache_pagesection', 2592000);
    mw_setCacheBackend($mw_backendClassName, 'cache_rootline',2592000);
    mw_setCacheBackend($mw_backendClassName, 'cache_imagesizes', 0);
    mw_setCacheBackend($mw_backendClassName, 'extbase_object', 0);
    mw_setCacheBackend($mw_backendClassName, 'extbase_reflection', 0);
} elseif ($version[0] === "7") {
    mw_setCacheBackend($mw_backendClassName, 'cache_hash');
    mw_setCacheBackend($mw_backendClassName, 'cache_pages');
    mw_setCacheBackend($mw_backendClassName, 'extbase_datamapfactory_datamap');
    mw_setCacheBackend($mw_backendClassName, 'extbase_typo3dbbackend_queries');
    mw_setCacheBackend($mw_backendClassName, 'cache_pagesection', 2592000);
    mw_setCacheBackend($mw_backendClassName, 'cache_rootline',2592000);
    mw_setCacheBackend($mw_backendClassName, 'cache_imagesizes', 0);
    mw_setCacheBackend($mw_backendClassName, 'extbase_object', 0);
    mw_setCacheBackend($mw_backendClassName, 'extbase_reflection', 0);
} else {
    mw_setCacheBackend($mw_backendClassName, 'cache_hash');
    mw_setCacheBackend($mw_backendClassName, 'cache_pages');
    mw_setCacheBackend($mw_backendClassName, 'cache_pagesection', 2592000);
    mw_setCacheBackend($mw_backendClassName, 'cache_rootline',2592000);
    mw_setCacheBackend($mw_backendClassName, 'cache_imagesizes', 0);
    mw_setCacheBackend($mw_backendClassName, 'extbase_datamapfactory_datamap', 0);
}

 

Für alle Versionen bis TYPO3 11.5 erstellst du eine AdditionalConfiguration.php im Ordner typo3conf. Ab TYPO3 Version 12.4 erstellst du eine additional.php in den Ordnern typo3conf/system (für Symlink Installationen) oder config/system (für Composer Installationen).

Bearbeite nun diese Datei und füge folgende Zeile am Ende hinzu:

include_once "MwCachingConfiguration.php";

 

Falls die Datei noch nicht existiert, lege sie neu an und trage die folgenden Zeilen ein: 

<?php
include_once "MwCachingConfiguration.php";

Fertig. Dein TYPO3 verwendet nun den APCu als Cache Backend und profitiert so vom ganzen Potenzial, das dir Performance Plus bietet.

Hinweis

Achte darauf, dass keine C0-Steuerzeichen in der Datei vorhanden sind. Dies passiert zum Beispiel, wenn du die Datei unter Windows mit Notepad erstellt und anschließend hochgeladen hast.

Alternativ kannst du die Datei lokal mit einem Editor erstellen, der Unix-konform speichern kann. Dies ist zum Beispiel mit Notepad++ oder UltraEdit möglich.