Daten temporär ablegen mit der Transient API
2015
Umfangreiche Datenbankabfragen oder aber auch das Beziehen von Daten von einer dritten Quelle kann durchaus die Ladezeit einer Seite verlangsamen und vor allem den Server belasten. Um diese Belastungen zu vermindern gibt es in WordPress die Transients API, welche Daten temporär abspeichert. So werden die umfangreichen Abfragen nicht mit jedem Page Load neu initialisiert, sondern immer erst nach einer gewissen Weile aktualisiert und dann in der Datenbank abgelegt.
In diesem Blogpost möchte ich die Funktionsweise der Transients API näher erläutern. In einem ersten Schritt fragt man ab, ob bestimmte Daten aktuell in der Datenbank abgelegt sind. Sollte dies der Fall sein, so werden diese Daten genommen. Sollten die Daten allerdings nicht existieren, beziehungsweise veraltet sein, so wird die eigentliche Abfrage zur Gewinnung dieser Daten ausgeführt und diese schließlich als Transient in der Datenbank abgelegt. Mit dem nächsten Page Load werden die Daten somit vorhanden sein und schneller bereit stehen.
Um die Transient API zu nutzen sieht der grundlegende Aufbau wie folgt aus:
Mit get_transient() erhalten wir die Daten, welche unter einem bestimmten Namen gespeichert werden. Diesen legen wir in einer Variablen ab. Sollten die Daten noch nicht vorhanden oder aber veraltet sein wird diese Variable false sein. In diesem Fall führen wir nun unseren langwierigen Code aus um an dessen Ende das gewünschte Ergebnis zu erhalten. Bevor wir dieses jedoch ausgeben speichern wir das Ergebnis zunächst mit Hilfe von set_transient() ab. Diese Funktion erwartet dabei drei Parameter:
- Den Namen des Transient
- Den Wert, welcher hinterlegt werden soll
- Ein Sekundenangabe, nach welchem der Transient nicht mehr gültig ist
Mit Hilfe dieses einfachen Vorgangs können wir komplexe Abfragen begrenzen und nur nach bestimmten zeitlichen Intervallen ausführen. Der abgespeicherte Wert kann dabei alles mögliche sein, ein String, ein Integer, ein Array oder auch ein Objekt. Sollte der Wert serialisiert werden müssen, so übernimmt WordPress diese Aufgabe.
WordPress bietet für die Angabe des Zeitrahmens, in welchem Daten valide sind eine kleine Unterstützung in Form von Konstanten. In unserem Beispiel läuft der Transient nach zwölf Stunden ab, indem wir angeben
12 * HOUR_IN_SECONDS
Weitere Konstanten sind:
MINUTE_IN_SECONDS = 60 (seconds) HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS DAY_IN_SECONDS = 24 * HOUR_IN_SECONDS WEEK_IN_SECONDS = 7 * DAY_IN_SECONDS YEAR_IN_SECONDS = 365 * DAY_IN_SECONDS
Mit Hilfe von delete_transient( ‚transient-name‘ ) können wir einen Transient wieder löschen.
Photo Credit: Storage Lockers (Lizenz)