Cache
Middleware que fornece funcionalidade de cache.
O middleware Cache pode armazenar em cache o StatusCode, Headers e Body de uma Response. Para conteúdos já armazenados em cache, o middleware Cache enviará diretamente o conteúdo em cache da memória para o cliente ao processar solicitações subsequentes.
Nota: Este plugin não armazena em cache objetos Response cujo Body seja ResBody::Stream. Se aplicado a tal Response, o Cache não processará essas solicitações e nenhum erro ocorrerá.
Principais Funcionalidades
-
CacheIssuerfornece uma abstração para gerar chaves de cache.RequestIssueré uma de suas implementações, permitindo definir quais partes da URL da solicitação e doMethodda solicitação devem ser usadas para gerar a chave de cache. Você também pode definir sua própria lógica de geração de chaves de cache. A chave de cache não precisa necessariamente ser uma string; qualquer tipo que satisfaça as restriçõesHash + Eq + Send + Sync + 'staticpode ser usado como chave. -
CacheStorefornece operações para armazenar e recuperar dados.MokaStoreé uma implementação de cache baseada em memória integrada, baseada emmoka. Você também pode definir sua própria implementação. -
Cacheé uma estrutura que implementaHandler. Ela também contém um campo internoskipper, que pode ser usado para especificar solicitações que devem ignorar o cache. Por padrão, usaMethodSkipperpara ignorar todas as solicitações, exceto aquelas comMethod::GET.Exemplo de código de implementação interna:
Migração Rápida de Outros Frameworks
Se você já usou mecanismos de cache em outros frameworks, os seguintes mapeamentos conceituais ajudarão você a se adaptar mais rapidamente à implementação de cache do Salvo:
Guia de Migração do Framework Rust
-
Migrando do Actix-web: Plugins como
actix-web-cacheno Actix-web normalmente precisam ser introduzidos separadamente, enquanto o cache no Salvo faz parte da biblioteca principal.
Guia de Migração para Frameworks em Outras Linguagens
-
Migrando do Go/Gin: O Gin usa um padrão de middleware, que o Salvo também adota de maneira semelhante:
-
Migrando do Spring Boot: O cache declarativo do Spring Boot precisa ser convertido para a configuração explícita de middleware do Salvo:
-
Migrando do Express.js: O middleware de cache do Express.js é conceitualmente semelhante ao do Salvo, mas a sintaxe difere:
Ao migrar de outros frameworks, preste atenção a vários conceitos-chave do cache do Salvo:
- Geração de Chave de Cache - Controlada pela interface
CacheIssuer. - Armazenamento de Cache - Implementado pela interface
CacheStore. - Lógica de Ignorar Cache - Personalizada pelo mecanismo
skipper.
Por padrão, o Salvo armazena em cache apenas solicitações GET, o que está alinhado com o comportamento padrão da maioria dos frameworks.
Código de Exemplo