flexway
FRENParler à un expert

Mettre une lecture en cache

GuideExploitationDepuis la version 1.2.0

Markdown

Guide d'exploitation : configurer, déployer et observer la passerelle. Ce que fait la capacité côté produit : guide produit ; l'appeler : guide développeur.

Objectif : servir une lecture stable (catalogue, référentiel) sans aller-retour vers l'amont - sans jamais servir à un appelant ce qui a été répondu à un autre.

Commande - au contrat, sur l'opération :

paths:
  /products:
    get:
      x-flexway-cache: { ttl: 60s }                   # public : les appelants anonymes
  /me/cart:
    get:
      security: [ { customers: [] } ]
      x-flexway-cache: { ttl: 30s, scope: subject }   # une entrée par tenant et par sujet

ou, pour un ensemble de routes, une politique cache - toujours publique :

policies:
  definitions:
    catalog-cache: { type: cache, config: { ttl: 5m } }
  chains:
    routes: { "/products/**": [catalog-cache] }

Vérif : la deuxième requête répond Flexway-Cache: hit et un Age, sans que l'amont la voie ; flexway_cache_lookups_total{result="hit"} monte ; /config montre cache dans le catalogue, la console une pastille « en cache ». Un If-None-Match qui correspond à l'ETag gardé reçoit un 304 du cache.

Règle Ce qu'elle veut dire
Rien par défaut Une opération sans x-flexway-cache ni politique cache n'est jamais cachée ; l'opération l'emporte sur la politique
L'amont raccourcit Durée = le plus court du ttl et de max-age, s-maxage ou Expires ; no-store, no-cache, private, Set-Cookie : jamais gardé
Longueur connue Une réponse sans Content-Length est un flux pour la passerelle : relayée sans tampon, jamais gardée
Un succès compte Débit et quota sont comptés avant la lecture du cache : il épargne l'amont, jamais l'allocation de l'appelant
Identité Un appelant identifié ne lit ni ne nourrit un cache public ; un cache authentifié se déclare à l'opération (scope: subject), clé tenant et sujet
Refusé au chargement Un cache sur un flux, un WebSocket, une méthode gRPC, l'inférence, une écriture ; public sur une opération qui exige une identité - le message nomme l'opération
Mémoire Par réplique, bornée : server.cache.max_bytes (32 Mio), server.cache.max_entry_bytes (1 Mio) ; non rechargeable ; un rechargement purge

Exemple complet : Cache de réponses.

Étapes suivantes