it-swarm.com.de

Caching von Elementen mit unterschiedlicher Cache-Lebensdauer

Ich prüfe die Verwendung von Joomlas Caching-Mechanismus für ein Plugin. Allerdings müsste ich die Plugin-Daten für einen bestimmten Zeitraum zwischenspeichern, unabhängig von den standortweiten Cache-Einstellungen.

Kann die standortweite Cachedauer außer Kraft gesetzt werden, jedoch nur für bestimmte zwischengespeicherte Daten?

Frage gilt für die aktuelle Joomla-Version (3.8.12), aber auch für J4, wenn es da Unterschiede gibt.

3
Spudley

Ja, Sie können Ihre Daten für Ihr Plugin zwischenspeichern, indem Sie eine neue Instanz JCache erstellen und Ihre benutzerdefinierten Optionen festlegen.

So etwas wie das Folgende würde das tun:

// Reading global configuration params
$conf = JFactory::getConfig();

// Setting a location for your cached data.
$cacheBase = JPATH_SITE . '/cache/yourcachelocation';

// Your custom cachegroup
$cacheGroup = 'yourCacheGroup';

// Lifetime for your cache
$lifetime = 60;

// Setting your options
$options = array(
    'defaultgroup'  => $cacheGroup,
    'storage'       => $conf->get('cache_handler', ''),
    'caching'       => true,
    'cachebase'     => $cacheBase,
    'lifetime'      => $lifetime,
);

// Instantiate your cache object
$cache = JCache::getInstance('', $options);

// Create $cacheDataId  
$cacheDataId = 'yourCacheDataId';


// It's time to check for cached data
if ($cache->get($cacheDataId) !== false )
{
    $data = $cache->get($cacheDataId); // We got data from cache
}
else
{
    // No cached data, fetch fresh data
    $data = yourFreshDataGenerationMethod();

    // Cache the data for the next time
    $cache->store($data, $cacheDataId);
}

// Do Nice things with your $data

Aktualisieren Sie, um relevante Informationen in die Kommentare aufzunehmen:

  • Sie können $cachebase, um einen benutzerdefinierten Speicherort für Ihre zwischengespeicherten Daten auszuwählen.

  • Anstatt anzugeben, dass Sie das $cachegroup, die eine ähnliche Sache tun würde.

  • Am wichtigsten ist das $cacheId Wenn Sie die Daten speichern, werden Sie Ihre gespeicherten Cache-Daten mit dieser ID abrufen.

  • Beachten Sie, dass, wenn Sie einen benutzerdefinierten Verzeichnispfad angeben ($cachebase) Um Ihre zwischengespeicherten Daten zu speichern, die nicht vorhanden sind, müssen Sie diesen Ordner erstellen. Andernfalls funktioniert dies nicht. Wenn Sie jedoch eine Cache-Gruppe verwenden, werden die Ordner für Ihren Cache automatisch erstellt - oder zumindest so Ich erinnere mich, dass es funktioniert ...).

Ich empfehle, mit diesen Optionen zu experimentieren und genau zu sehen, wie sie funktionieren.

Hilfreiche Links:

3
FFrewin