Joomla! Programmierung/Framework/JFactory/getCache
JFactory/getCache Liefert eine Referenz zu dem globalen JCache Objekt. Wird nur neu erstellt, wenn es noch nicht existiert.
Inhaltsverzeichnis |
[Bearbeiten] Syntax
static getCache( [$group], [$handler], [$storage] )
- @return object JCache
- @since
| Parameter | Datentyp | Beschreibung | Standardwert |
|---|---|---|---|
| $group | string | Name der Cache Gruppe. Erlaubt verschiedene Caches zu erstellen, die einer eindeutigen Gruppe zugewiesen werden. | |
| $handler | string | Typ des Caches. Joomla! unterstützt aktuell vier Typen: "callback", "output", "page" und "view". Siehe JCache für weitere Informationen. | 'callback' |
| $storage | string | Die Speichermethode des Caches. Joomla! unterstützt aktuell fünf Methoden: "apc", "eaccelerator", "file", "memcache" und "xcache". Siehe JCache für weitere Informationen. | null |
[Bearbeiten] Beispiele
[Bearbeiten] Methode cachen
In diesem Beispiel wird ein einfacher "Callback Cache" implementiert. Dieser cached das Ergebnis von "teureMethode" so dass das Ergebnis für eine gegebene Anzahl an Parametern nur einmal errechnet wird. Siehe JCache für weitere Informationen.
// Definiere eine Klasse die die rechenintensiv Methode enthält. class teuresKlasse { function teureMethode () { // JDatabase Instanz laden $db = JFactory::getDBO(); // Den selben query 250 mal ausführen for ($i=0; $i<250; $i++) { $db->setQuery( 'SELECT * FROM #__content' ); $rows = $db->loadObjectList(); } // Ergebnis ausgeben. return $rows; } } // Cache Instanz laden. $cache = JFactory::getCache( 'meinCache' ); /** * Zähler initialisieren {@see JProfiler} */ $profiler = new JProfiler(); // Methode ohne Cache aufrufen $rows = teuresKlasse::teureMethode(); // Benötigte Zeit ausgeben echo $profiler->mark( ' ohne Cache' ); /** * Zähler initialisieren {@see JProfiler} */ $profiler = new JProfiler(); // Methode mit Cache aufrufen $rows = $cache->call( array( 'teuresKlasse', 'teureMethode' ) ); // Benötigte Zeit ausgeben echo $profiler->mark( ' mit Cache' );
Nun den Code einmal ausführen. Das erste mal wird ein ähnliches Ergebnis wie dieses hier erscheinen:
2.093 ohne Cache 2.160 mit Cache
Der zweite Wert ist ein bisschen langsamer, weil der Cache in eine Datei geschrieben werden muss. Wenn Sie nun ein zweites mal den Code ausführen, sollten die Werte in etwa so lauten:
2.073 ohne Cache 0.008 mit Cache
Der Cache hat die Seite merklich beschleunigt.
[Bearbeiten] Siehe auch
- JFactory->getCache() auf api.joomla.org
- JCache
[Bearbeiten] Danksagung
Das Beispiel wurde im original von Mathias (mjaz) erstellt.
[Bearbeiten] Quellcode
{ return self::$cache[$hash]; } $handler = ($handler == 'function') ? 'callback' : $handler; $conf = self::getConfig(); $options['storage'] = $storage; } jimport('joomla.cache.cache'); self::$cache[$hash] = $cache; return self::$cache[$hash]; }