it-swarm.dev

Utilizzo di JCache per cancellare i dati memorizzati nella cache di un plug-in specifico

È possibile utilizzare JCache per cancellare i dati memorizzati nella cache per un plug-in specifico o tutti i plug-in? Sto usando un plugin per visualizzare un'immagine e del testo su una pagina e devo cancellare la cache manualmente affinché le modifiche abbiano effetto.

Non sono stati trovati esempi di questo nelle mie ricerche su Google o nella documentazione ufficiale.

3
Eric

Senza sapere quali plugin ti interessano, ecco un po 'di codice che otterrebbe, imposta e svuota una cache per un determinato elemento.

$output = '';
$cache = JFactory::getCache('com_something', '');
$cache->setCaching(true);
$cache->setLifeTime(86400);

// See All cached items
echo "<pre>".print_r($cache->getAll(), true)."</pre>";

// Create a Cache ID that works for you :
$cacheid = md5('something'.JFactory::getUser()->id);  // Just an example

// Remove cached output
//$cache->remove($cacheid);

// Get cached output
$output = $cache->get($cacheid);
if (empty($output)) {
    $output = "something I want to cache";
    $cache->store($output, $cacheid);
}

Usando i documenti su JCache , e facendo eco agli elementi catturati correnti con $ cache-> getAll () apparirà qualcosa del genere per identificare quali elementi ti interessano:

Array
(
    [com_something] => JCacheStorageHelper Object
        (
            [group] => com_something
            [size] => 0.09
            [count] => 2
        )

    [Gantry] => JCacheStorageHelper Object
        (
            [group] => Gantry
            [size] => 332.58
            [count] => 5
        )

    [GantryLess] => JCacheStorageHelper Object
        (
            [group] => GantryLess
            [size] => 354.04
            [count] => 9
        )

    [myplugin] => JCacheStorageHelper Object
        (
            [group] => myplugin
            [size] => 0.09
            [count] => 2
        )

)
5
GDP