Mettre une lecture en cache
GuideExploitationDepuis la version 1.2.0
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 sujetou, 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.