Cache
Middleware che fornisce funzionalità di memorizzazione nella cache.
Il middleware Cache può memorizzare nella cache lo StatusCode, gli Headers e il Body di una Response. Per i contenuti già memorizzati, il middleware Cache invierà direttamente il contenuto in cache dalla memoria al client durante le richieste successive.
Nota: Questo plugin non memorizza nella cache gli oggetti Response il cui Body è ResBody::Stream. Se applicato a una Response di questo tipo, Cache non elaborerà queste richieste e non si verificherà alcun errore.
Caratteristiche Principali
-
CacheIssuerfornisce un'astrazione per la generazione delle chiavi di cache.RequestIssuerè una delle sue implementazioni, che consente di definire quali parti dell'URL della richiesta e delMethoddella richiesta devono essere utilizzate per generare la chiave di cache. È possibile definire anche una propria logica di generazione delle chiavi di cache. La chiave di cache non deve necessariamente essere una stringa; qualsiasi tipo che soddisfi i vincoliHash + Eq + Send + Sync + 'staticpuò essere utilizzato come chiave. -
CacheStorefornisce operazioni per l'archiviazione e il recupero dei dati.MokaStoreè un'implementazione di cache in memoria integrata basata sumoka. È possibile definire anche una propria implementazione. -
Cacheè una struct che implementaHandler. Contiene anche un campo internoskipper, che può essere utilizzato per specificare le richieste che devono saltare la cache. Per impostazione predefinita, utilizzaMethodSkipperper saltare tutte le richieste tranne quelle conMethod::GET.Codice di esempio dell'implementazione interna:
Migrazione Rapida da Altri Framework
Se hai utilizzato meccanismi di cache in altri framework, le seguenti corrispondenze concettuali ti aiuteranno ad adattarti più rapidamente all'implementazione della cache di Salvo:
Guida alla Migrazione da Framework Rust
-
Migrazione da Actix-web: Plugin come
actix-web-cachein Actix-web di solito devono essere introdotti separatamente, mentre la cache in Salvo fa parte della libreria core.
Guida alla Migrazione da Framework in Altri Linguaggi
-
Migrazione da Go/Gin: Gin utilizza un pattern middleware, che Salvo adotta in modo simile:
-
Migrazione da Spring Boot: La cache dichiarativa di Spring Boot deve essere convertita nella configurazione esplicita del middleware di Salvo:
-
Migrazione da Express.js: Il middleware di cache di Express è concettualmente simile a quello di Salvo, ma la sintassi è diversa:
Durante la migrazione da altri framework, presta attenzione a diversi concetti chiave della cache di Salvo:
- Generazione della Chiave di Cache - Controllata tramite l'interfaccia
CacheIssuer. - Archiviazione della Cache - Implementata tramite l'interfaccia
CacheStore. - Logica di Esclusione dalla Cache - Personalizzabile tramite il meccanismo
skipper.
Per impostazione predefinita, Salvo memorizza nella cache solo le richieste GET, in linea con il comportamento predefinito della maggior parte dei framework.
Codice di Esempio