Cache
Middleware offrant une fonctionnalité de mise en cache.
Le middleware Cache peut mettre en cache le StatusCode, les Headers et le Body d'une Response. Pour le contenu déjà mis en cache, le middleware Cache enverra directement le contenu en mémoire au client lors du traitement des requêtes suivantes.
Note : Ce plugin ne met pas en cache les objets Response dont le Body est ResBody::Stream. S'il est appliqué à une telle Response, Cache ne traitera pas ces requêtes et aucune erreur ne se produira.
Fonctionnalités principales
-
CacheIssuerfournit une abstraction pour générer des clés de cache.RequestIssuerest l'une de ses implémentations, vous permettant de définir quelles parties de l'URL de la requête et de laMéthodede requête doivent être utilisées pour générer la clé de cache. Vous pouvez également définir votre propre logique de génération de clé de cache. La clé de cache ne doit pas nécessairement être une chaîne de caractères ; tout type satisfaisant les contraintesHash + Eq + Send + Sync + 'staticpeut être utilisé comme clé. -
CacheStorefournit des opérations pour stocker et récupérer des données.MokaStoreest une implémentation de cache en mémoire intégrée basée surmoka. Vous pouvez également définir votre propre implémentation. -
Cacheest une structure qui implémenteHandler. Elle contient également un champ interneskipper, qui peut être utilisé pour spécifier les requêtes qui doivent ignorer la mise en cache. Par défaut, il utiliseMethodSkipperpour ignorer toutes les requêtes sauf celles avecMethod::GET.Exemple de code d'implémentation interne :
Migration rapide depuis d'autres frameworks
Si vous avez utilisé des mécanismes de cache dans d'autres frameworks, les correspondances conceptuelles suivantes vous aideront à vous adapter plus rapidement à l'implémentation du cache de Salvo :
Guide de migration pour les frameworks Rust
-
Migration depuis Actix-web : Les plugins comme
actix-web-cachedans Actix-web doivent généralement être introduits séparément, tandis que la mise en cache dans Salvo fait partie de la bibliothèque principale.
Guide de migration pour les frameworks dans d'autres langages
-
Migration depuis Go/Gin : Gin utilise un modèle de middleware, que Salvo adopte également de manière similaire :
-
Migration depuis Spring Boot : La mise en cache déclarative de Spring Boot doit être convertie en configuration explicite de middleware dans Salvo :
-
Migration depuis Express.js : Le middleware de cache d'Express est conceptuellement similaire à celui de Salvo, mais la syntaxe diffère :
Lors de la migration depuis d'autres frameworks, prêtez attention à plusieurs concepts clés de la mise en cache de Salvo :
- Génération de clé de cache - Contrôlée via l'interface
CacheIssuer. - Stockage du cache - Implémenté via l'interface
CacheStore. - Logique d'ignorance du cache - Personnalisable via le mécanisme
skipper.
Par défaut, Salvo ne met en cache que les requêtes GET, ce qui correspond au comportement par défaut de la plupart des frameworks.
Exemple de code