Für Rest-Abfragen, die keine Daten manipulieren (GET), steht ein Caching-Mechanismus zur Verfügung, der für definierte Parameter das Ergebnis einer REST-Page (also des dahinter liegenden Services mit definierten Parametern) zwischenspeichert. Dies ist vor Allem für performancehungrige oder zeitintensiven Abfragen sinnvoll. Um den Mechanismus zu nutzen, muss in der Tabelle Antwortcache
lediglich ein Datensatz angelegt werden:
Feld | Beschreibung | optional |
---|---|---|
Seite | Die REST-Page, für die das Caching definiert wird | nein |
Parameter | Die Parameter für den Service der REST-Page | nein |
Cache-Dauer | Die Dauer, für die der Cache auf Basis des Zeitstempels aktiv ist | nein |
Zeitstempel | Der Zeitstempel des aktuellen Caches. Wird automatisch befüllt | ja |
Hinweis: alle Parameter müssen ohne URL-Encoding gepflegt werden.
Ablauf
Für jeden REST-Request, der per GET im System ankommt, wird die Tabelle Antwortcache
geprüft.
Existiert ein Eintrag mit übereinstimmender REST-Page und übereinstimmenden Parametern, wird der Cache angewandt.
Ist der Cache nicht aktiv oder nicht mehr valide (weil der Zeitstempel hinsichtlich der Cache-Dauer abgelaufen ist), wird er neu aufgebaut. Dabei wird auf dem Server eine Datei mit der Antwort des Services für die definierten Parameter abgelegt und der Zeitstempel wird auf den aktuellen Zeitpunkt gesetzt.
Ist der Cache bereits aufgebaut und valide, wird die dem Cache zu Grunde liegende Datei mit dem
Antwortcache
ausgelesen und ausgeliefert.
Existiert kein passender Eintrag, wird der Request wie üblich beantwortet, indem der zugeordnete Service mit den übergebenen Parametern aufgerufen wird.
Automatischer Aufbau des Caches
Um lange Wartezeiten beim Aufbauen der Caches zu vermeiden, existiert ein Mechanismus, der den Cache für alle Datensätze in der Tabelle Antwortcache
automatisch aufbaut.
Der Cron wird wie folgt definiert:
php plugin/remote/brandbox/framework/src/entrypoint.php -endpoint=Cron -package=Join/Restful -host=domain.brandbox.de
Das Cron-Skript holt alle Einträge aus Antwortcache
, deren Cache nicht gesetzt (Zeitstempel leer) oder abgelaufen (Zeitstempel plus Cache-Dauer ist kleiner als der aktuelle Zeitpunkt) ist, und baut den Cache auf, indem der zugeordnete Service mit den gepflegten Parametern aufgerufen und die Antwort auf einer Datei auf dem Server gespeichert wird.
Umgehen des Caches
In Einzelfällen kann es notwendig sein, den Cache zu umgehen, bspw. um zu überprüfen, ob der Antwortcache
aktuell ist. Hierzu kann für alle Services, die per GET aufgerufen werden, der Parameter noCache=1
übergeben werden.