Delen via


Cache-Control in REST-querycache

Voor REST-eindpunten kunt u beïnvloeden hoe Data API Builder (DAB) de interne cache voor queryresultaten gebruikt met de Cache-Control aanvraagheader.

Belangrijk

Als caching is uitgeschakeld in de runtimeconfiguratie, worden deze instructies genegeerd en worden query's normaal uitgevoerd.

Ondersteunde Cache-Control waarden

Waarde Gedrag
no-cache Dwingt DAB af om zowel L1- als L2-caches te omzeilen, nieuwe gegevens op te halen uit de database en de caches bij te werken met het nieuwe resultaat.
no-store Hiermee wordt aangegeven dat DAB het antwoord helemaal niet in de cache moet opslaan (wordt niet opgeslagen in L1 of L2 en probeert het niet op te halen uit de cache).

Gedrag

  • Richtlijnkoppeling is niet hoofdlettergevoelig.
  • DAB interpreteert geen andere standaardrichtlijnen Cache-Control , zoals max-age of max-verouderde.
  • Is alleen van toepassing op REST-querybewerkingen. Niet gebruikt voor cacherichtlijnen op aanvraagniveau van GraphQL.
  • De Cache-Control HTTP-headerwaarden aanvragen bepalen zowel L1- als L2-cache.

Opmerking

DAB stelt geen antwoordheaders voor cachebeheer in voor een cachebewerking.

Instructie: geen cache

Hiermee dwingt u een nieuwe lees- en update van de cachelagen.

Aanvraag

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

Antwoord (voorbeeld)

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

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

Effect: Cache bevat nu dit nieuwe resultaat (onderhevig aan geconfigureerde TTL).

Richtlijn: no-store

Maakt gebruik van een bestaande waarde in de cache indien aanwezig; anders wordt een query uitgevoerd op de database, maar wordt de cache niet gevuld (of vernieuwd) met het nieuwe resultaat.

Aanvraag

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

Antwoord (voorbeeld)

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

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

Effect: Als dit resultaat nog niet in de cache is opgeslagen, wordt het niet opgeslagen. Een latere only-if-cached aanvraag kan mislukken als er geen eerdere aanvraag de cache heeft ingevuld.

Review

  • Gebruik no-cache deze opdracht wanneer u een vernieuwing van de database moet afdwingen en ook de cache moet bijwerken.
  • Gebruik no-store deze optie als u de gegevens wilt gebruiken, maar niet wilt dat deze reactie de cache wijzigt (hoewel deze een bestaande waarde in de cache kan lezen).
  • Laat de header weg voor normaal cachinggedrag.