Wie verwende ich APCu mit TYPO3?
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.
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.