Stud.IP enthält ein minimales Framework, um Variablen bzw. deren Inhalt zu cachen. In der Datei lib/classes/caching.php sind die folgenden Klassen und Interfaces enthalten:
* Klasse StudipCacheFactory * Interface StudipCache * Klasse StudipNullCache
Seit Version 1.11 ist das Caching fester Bestandteil (FileCaching) und standardmässig aktiviert.
Die Aufgabe der StudipCacheFactory ist das zur Verfügung stellen eines Stud.IP-weiten Caches. Um die Singleton-Instanz zu erhalten, muss lediglich StudipCacheFactory::getCache() aufgerufen werden.
Das Interface StudipCache definiert die Operationen einer Cache-Instanz:
Der Cache kann dazu verwendet werden, über mehrere HTTP-Requests hinweg einen möglicherweise aufwendig zu berechnenden Wert zu speichern. Der Cache garantiert nicht, dass ein Schlüssel-Wert-Paar für die gesamte expire-Dauer vorgehalten wird. Er garantiert lediglich, dass das Schlüssel-Wert-Paar nach Ablauf nicht mehr zurückgeliefert wird.
Der Lebenszyklus eines Schlüssel-Wert-Eintrags in den Cache sieht so aus:
#write eingetragen.
#read und dem Schlüssel ausgelesen werden.
#expire aufgerufen.
In der Regel sollte man nur Resultate referenziell transparenter Funktionen cachen, andernfalls muss man sich selbst um die Invalidierung des gespeicherten Wertes kümmern, wenn das alte Resultat ungültig wird. Dazu stehen drei Möglichkeiten zur Verfügung:
#expire.
Beispiel: Es soll eine Liste der Geburststagskinder angezeigt werden. Da die Berechnung aufwendig ist, soll das Ergebnis gespeichert werden. Ab Mitternacht ist die Liste neu zu berechnen. Unter Berücksichtigung der obigen drei Punkte kann man also folgendermaßen vorgehen:
Ganz offensichtlich ist (in diesem Fall) die letzte Möglichkeit die eleganteste.
Der Schlüssel eines Cache-Eintrags wird durch Vorwärtsschrägstriche "/" in Namensräume aufgeteilt. Stud.IP-Kerndateien sollten "core/XYZ/argument1/argument2/usw" erzeugen. Stud.IP-Plugins sollten dementsprechend "plugin/birthday/22" verwenden. Auf diese Weise sollte es zu keinen Kollisionen kommen.
Der Schlüssel und der Wert eines Cache-Eintrags müssen Strings sein. Arrays oder Objekte müssen (de)serialisiert werden.
Da es sich bei StudipCache nur um ein Interface handelt, muss eine konkrete Implementation zur Verfügung gestellt werden. Stud.IP wird dabei lediglich mit dem StudipNullCache ausgeliefert, der dann zwar von der Factory zurückgeliefert wird und auch entsprechend und gültig antwortet, aber tatsächlich nicht speichert. Ein geschriebener Wert wird also nie zurückgelesen. Tatsächlich cachende Implementationen des Interfaces müssen über entsprechende Plugins nachträglich installiert werden. PHP für sich bietet nämlich keine (guten) Möglichkeiten, jedoch gibt es spezielle PHP-Erweiterungen, die PHP damit nachrüsten bzw. externe Lösung verfügbar machen.
Derzeit existieren 4 verschiedene Plugins:
Für die Konfiguration der Erweiterung muss die entsprechende Dokumentation befolgt werden, da der Cache sonst nicht funktionieren wird.
Letzte Änderung am 16.03.2010 15:30 Uhr von mriehe.
Hier finden Sie Entwickler-Dokumentation für Stud.IP.
Hilfe zur Bedienung und Administration von Stud.IP finden Sie im Dokumentations-Portal.