Caché
Middleware que proporciona funcionalidad de almacenamiento en caché.
El middleware Cache puede almacenar en caché el StatusCode, los Headers y el Body de una Response. Para el contenido que ya ha sido almacenado en caché, el middleware Cache enviará directamente el contenido almacenado en memoria al cliente al procesar solicitudes posteriores.
Nota: Este complemento no almacena en caché objetos Response cuyo Body sea ResBody::Stream. Si se aplica a dicha Response, Cache no procesará estas solicitudes y no se producirá ningún error.
Características Principales
-
CacheIssuerproporciona una abstracción para generar claves de caché.RequestIssueres una de sus implementaciones, permitiéndote definir qué partes de la URL de la solicitud y delMethodde la solicitud deben usarse para generar la clave de caché. También puedes definir tu propia lógica de generación de claves de caché. La clave de caché no necesariamente tiene que ser una cadena; cualquier tipo que cumpla con las restriccionesHash + Eq + Send + Sync + 'staticpuede usarse como clave. -
CacheStoreproporciona operaciones para almacenar y recuperar datos.MokaStorees una implementación de caché en memoria incorporada basada enmoka. También puedes definir tu propia implementación. -
Cachees una estructura que implementaHandler. También contiene un campo internoskipper, que puede usarse para especificar solicitudes que deben omitir el almacenamiento en caché. Por defecto, utilizaMethodSkipperpara omitir todas las solicitudes excepto aquellas conMethod::GET.Código de ejemplo de implementación interna:
Migración Rápida desde Otros Frameworks
Si has utilizado mecanismos de caché en otros frameworks, las siguientes correspondencias conceptuales te ayudarán a adaptarte más rápidamente a la implementación de caché de Salvo:
Guía de Migración desde Frameworks Rust
-
Migrando desde Actix-web: Complementos como
actix-web-cacheen Actix-web normalmente deben introducirse por separado, mientras que el almacenamiento en caché en Salvo es parte de la biblioteca principal.
Guía de Migración para Frameworks en Otros Lenguajes
-
Migrando desde Go/Gin: Gin utiliza un patrón de middleware, que Salvo también adopta de manera similar:
-
Migrando desde Spring Boot: El almacenamiento en caché declarativo de Spring Boot debe convertirse a la configuración explícita de middleware de Salvo:
-
Migrando desde Express.js: El middleware de caché de Express es conceptualmente similar al de Salvo, pero la sintaxis difiere:
Al migrar desde otros frameworks, presta atención a varios conceptos clave del almacenamiento en caché de Salvo:
- Generación de Claves de Caché - Controlada a través de la interfaz
CacheIssuer. - Almacenamiento en Caché - Implementado a través de la interfaz
CacheStore. - Lógica de Omisión de Caché - Personalizada a través del mecanismo
skipper.
Por defecto, Salvo solo almacena en caché solicitudes GET, lo que se alinea con el comportamiento predeterminado de la mayoría de los frameworks.
Código de Ejemplo