
Wenn man schon kzH rumsitzt, kann man sich ja wenigstens um die unbeliebten Dinge kümmern, die noch auf der eigenen To-Do-Liste stehen.
Konkrekt handelte es sich bei mir dabei um das Caching der API-Abfragen bei meinem WPUBG-Plugin für WordPress und so kommt nun der dritte Beitrag zu diesem Thema zustande.
Das „Problem“ mit der PUBG-API (und auch verdammt vielen anderen APIs) ist, dass man nicht beliebig viele Anfragen stellen kann. In meinem Fall sind es 10 Anfragen pro Minute.
Das kann natürlich zu unerwünschtem Verhalten führen, wenn das Plugin auf einer stark frequentierten WordPress-Installation eingesetzt wird, denn leider werden API-Anfragen in den seltesten Fällen von sog. Caching-Plugins berücksichtigt. Zwar gibt es speziell darauf ausgelegte Plugins, aber sinnvoller wäre es ja schon, diese Aufgabe direkt von WPUBG lösen zu lassen.
Nach kurzer Recherche stieß ich dann auf die Transients API, welche direkt im WordPress Core integriert ist.
Die Transient API bietet die beiden Funktionen set_transient() und get_transient(), um Daten für einen Zeitraum zwischenzuspeichern. Dabei kann nur der maximale Zeitraum der Speicherung, nicht jedoch der minimale Zeitraum festgelegt werden. Man sollte daher darauf achten, eine Methode bereitzuhalten, welche die benötigten Daten erneut abruft, sofern sie im Cache nicht mehr verfügbar sind.
https://core.trac.wordpress.org/ticket/20316#comment:47
Everyone seems to misunderstand how transient expiration works, so the long and short of it is: transient expiration times are a maximum time. There is no minimum age. Transients might disappear one second after you set them, or 24 hours, but they will never be around after the expiration time.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$season_transient = get_transient('wpubg_seasonID'); if (!empty($season_transient)) { $seasonID = get_transient('wpubg_seasonID'); } else { $url = "https://api.pubg.com/shards/steam/seasons"; $result = wpubg_getData ($url, $apikey); if (!empty($result)) { ... $seasonID = $data['id']; set_transient('wpubg_seasonID',$seasonID,5*MINUTE_IN_SECONDS); } } |
Wenn Dir dieser Artikel geholfen und/oder gefallen hat, freue ich mich, wenn Du janbpunkt.de mit einer kleinen Spende per PayPal unterstützt. Jeder Betrag ist willkommen.
Über einen Kommentar freue ich mich natürlich auch :-)

Jan B-Punkt

Neueste Artikel von Jan B-Punkt (alle ansehen)
- Angespielt: Fights in Tight Spaces - 26. Februar 2021
- Erfolgreicher Social Engineering-Angriff dank Arztbesuch - 17. Februar 2021
- Adventskalender Gewinnspiele 2020 - 1. Dezember 2020
- Rauchfrei v2 – Erster Monat überstanden - 29. November 2020
- ohsnap! vs Spigen-Halterung - 6. November 2020