web-dev-qa-db-fra.com

Utilisation de JCache pour effacer les données en cache d'un plugin spécifique

Est-il possible d'utiliser JCache pour effacer les données en cache d'un plugin spécifique ou de tous les plugins? J'utilise un plugin pour afficher une image et du texte sur une page et je dois vider le cache manuellement pour que les modifications prises en compte.

Je n'ai trouvé aucun exemple dans mes recherches sur Google ou dans la documentation officielle.

3
Eric

Sans savoir de quel plugin vous êtes concerné, voici un code qui pourrait obtenir, définir et effacer le cache d'un élément donné.

$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);
}

L'utilisation de la documentation sur JCache , et l'écho des éléments capturés actuels avec $ cache-> getAll () ressembleront à ceci pour identifier le ou les éléments qui vous intéressent:

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