Dela via


Cache-Control i REST-frågecachelagring

För REST-slutpunkter kan du påverka hur Data API Builder (DAB) använder sin interna frågeresultatcache med begärandehuvudet Cache-Control .

Viktigt!

Om cachelagring är inaktiverat i körningskonfigurationen ignoreras dessa direktiv och frågor körs normalt.

Cache-Control värden som stöds

Värde Beteende
no-cache Tvingar DAB att kringgå både L1- och L2-cacheminnen, hämta nya data från databasen och uppdatera cacheminnena med det nya resultatet.
no-store Säger till DAB att inte cachelagrat svaret alls (lagrar inte i L1 eller L2 och försöker inte hämta från cacheminnet).

Beteende

  • Direktivmatchning är skiftlägeskänsligt.
  • DAB tolkar inte andra standarddirektiv Cache-Control som max-age eller max-stale.
  • Gäller endast för REST-frågeåtgärder. Används inte för cachedirektiv på GraphQL-begärandenivå.
  • Http-huvudvärdena för Cache-Control begäran styr både L1- och L2-cachen.

Anmärkning

DAB ställer inte in svarshuvuden för cachekontroll för någon cacheåtgärd.

Direktiv: ingen cache

Tvingar fram en ny läsning och uppdaterar cachelagren.

Begäran

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

Svar (exempel)

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

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

Effekt: Cachen innehåller nu det här nya resultatet (med förbehåll för konfigurerad TTL).

Direktiv: ingen butik

Använder ett befintligt cachelagrat värde om det finns. frågar annars databasen men fyller inte i (eller uppdaterar) cacheminnet med det nya resultatet.

Begäran

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

Svar (exempel)

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

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

Effekt: Om det här resultatet inte redan har cachelagrats lagras det inte. En senare only-if-cached begäran kan misslyckas om ingen tidigare begäran fyllde cacheminnet.

Review

  • Använd no-cache när du behöver framtvinga en uppdatering från databasen och även uppdatera cacheminnet.
  • Använd no-store när du vill ha data men inte vill att det här svaret ska ändra cacheminnet (även om det kan läsa ett befintligt cachelagrat värde).
  • Utelämna huvudet för normalt cachelagringsbeteende.