Freigeben über


Cache-Control im ZWISCHENspeichern von REST-Abfragen

Für REST-Endpunkte können Sie beeinflussen, wie der Daten-API-Generator (DAB) seinen internen Abfrageergebniscache mit dem Cache-Control Anforderungsheader verwendet.

Von Bedeutung

Wenn die Zwischenspeicherung in der Laufzeitkonfiguration deaktiviert ist, werden diese Direktiven ignoriert, und Abfragen werden normal ausgeführt.

Unterstützte Cache-Control Werte

Wert Verhalten
no-cache Erzwingt DAB, sowohl L1- als auch L2-Caches zu umgehen, frische Daten aus der Datenbank abzurufen und die Caches mit dem neuen Ergebnis zu aktualisieren.
no-store Weist DAB an, die Antwort überhaupt nicht zwischenzuspeichern (speichert nicht in L1 oder L2 und versucht nicht, aus dem Cache abzurufen).

Verhalten

  • Bei der Direktive wird die Groß-/Kleinschreibung nicht beachtet.
  • DAB interpretiert keine anderen Standarddirektiven Cache-Control wie Max-Age oder Max-Stale.
  • Gilt nur für REST-Abfragevorgänge. Wird nicht für GraphQL-Cachedirektiven auf Anforderungsebene verwendet.
  • Die Cache-Control ANFORDERUNGs-HTTP-Headerwerte steuern sowohl den L1- als auch den L2-Cache.

Hinweis

DAB legt keine Cachesteuerelement-Antwortheader für einen Cachevorgang fest.

Direktive: no-cache

Erzwingt eine neue Lese- und Aktualisierung der Cacheebenen.

Anfrage

GET /api/Books
Cache-Control: no-cache
Accept: application/json

Antwort (Beispiel)

HTTP/1.1 200 OK
Content-Type: application/json

[
  { "id": 1, "title": "The Hobbit" },
  { "id": 2, "title": "The Silmarillion" }
]

Effekt: Cache enthält jetzt dieses frische Ergebnis (vorbehaltlich der konfigurierten TTL).

Direktive: no-store

Verwendet einen vorhandenen zwischengespeicherten Wert, wenn vorhanden; andernfalls fragt die Datenbank ab, füllt den Cache aber nicht mit dem neuen Ergebnis auf (oder aktualisiert).

Anfrage

GET /api/Books
Cache-Control: no-store
Accept: application/json

Antwort (Beispiel)

HTTP/1.1 200 OK
Content-Type: application/json

[
  { "id": 1, "title": "The Hobbit" },
  { "id": 2, "title": "The Silmarillion" }
]

Effekt: Wenn dieses Ergebnis noch nicht zwischengespeichert wurde, wird es nicht gespeichert. Eine spätere only-if-cached Anforderung konnte fehlschlagen, wenn keine frühere Anforderung den Cache aufgefüllt hat.

Review

  • Verwenden Sie no-cache diesen Vorgang, wenn Sie eine Aktualisierung aus der Datenbank erzwingen und auch den Cache aktualisieren müssen.
  • Verwenden Sie no-store diese Option, wenn Sie die Daten verwenden möchten, diese Antwort aber nicht möchten, um den Cache zu ändern (obwohl er möglicherweise einen vorhandenen zwischengespeicherten Wert liest).
  • Lassen Sie den Header für normales Zwischenspeicherungsverhalten aus.