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 Beitrag geholfen hat und/oder Du mich finanziell unterstützen magst, kannst Du dies gerne per Paypal machen.
Alternativ kannst Du Dir meinen Amazon-Partnerlink in die Favoriten legen und Amazon bei Deinen zukünftigen Einkäufen darüber aufrufen:
Es entstehen Dir dadurch keine Mehrkosten, ich erhalte aber eine kleine Provision.
Über einen Kommentar freue ich mich natürlich auch :-)
Jan B-Punkt
Neueste Artikel von Jan B-Punkt (alle ansehen)
- Freie News für freie User – Schneller als die Paywall - 22. April 2024
- Adventskalender Gewinnspiele 2023 - 1. Dezember 2023
- Angespielt: Starship Troopers: Extermination - 19. Mai 2023
- Fazit zum ATOMSTACK A5 pro nach zwei Monaten Nutzung - 9. Mai 2023
- Zeitumstellung 2023 - 28. Februar 2023