Sdílet prostřednictvím


Cache-Control v ukládání dotazů REST do mezipaměti

U koncových bodů REST můžete ovlivnit, jak Tvůrce rozhraní DATA API (DAB) používá interní mezipaměť výsledků dotazu s hlavičkou Cache-Control požadavku.

Důležité

Pokud je ukládání do mezipaměti v konfiguraci modulu runtime zakázané, tyto direktivy se ignorují a dotazy běží normálně.

Podporované Cache-Control hodnoty

Hodnota Chování
no-cache Vynutí DAB obejít mezipaměti L1 i L2, načíst nová data z databáze a aktualizovat mezipaměti novým výsledkem.
no-store Říká DAB, aby odpověď neukládala vůbec (neukládá se do L1 nebo L2 a nepokouší se načíst z mezipaměti).

Chování

  • Porovnávání direktiv nerozlišuje malá a velká písmena.
  • JAZYK DAB neinterpretuje jiné standardní Cache-Control direktivy, jako je max-age nebo max-zastaralé.
  • Platí jenom pro operace dotazů REST. Nepoužívá se pro direktivy mezipaměti na úrovni požadavků GraphQL.
  • Hodnoty hlaviček PROTOKOLU HTTP Cache-Control řídí mezipaměť L1 i L2.

Poznámka:

Jazyk DAB nenastavuje hlavičky odpovědi řízení mezipaměti pro žádnou operaci mezipaměti.

Direktiva: no-cache

Vynutí nové čtení a aktualizuje vrstvy mezipaměti.

Žádost

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

Odpověď (příklad)

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

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

Efekt: Mezipaměť teď uchovává tento aktuální výsledek (podle nakonfigurované hodnoty TTL).

Direktiva: no-store

Používá existující hodnotu uloženou v mezipaměti, pokud je k dispozici; jinak dotazuje databázi, ale nenaplní (nebo neaktualizuje) mezipaměť novým výsledkem.

Žádost

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

Odpověď (příklad)

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

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

Efekt: Pokud tento výsledek ještě nebyl uložen v mezipaměti, neuloží se. Pozdější only-if-cached požadavek může selhat, pokud se do mezipaměti nenaplní žádný předchozí požadavek.

Review

  • Použijte no-cache , když potřebujete vynutit aktualizaci z databáze a také aktualizovat mezipaměť.
  • Použijte no-store , když chcete data, ale nechcete, aby tato odpověď změnila mezipaměť (i když může číst existující hodnotu v mezipaměti).
  • Vynecháte hlavičku pro normální chování ukládání do mezipaměti.