Cabeçalhos de Cache

Um middleware que fornece suporte para configurar cabeçalhos de cache.

O controle de cache é uma parte crucial da otimização de desempenho web. Ao configurar corretamente os cabeçalhos de cache, é possível reduzir solicitações de rede desnecessárias, melhorando assim o desempenho da aplicação. Cache-Control é um cabeçalho de resposta HTTP usado para especificar políticas de cache do navegador. Ele controla quem pode armazenar respostas em cache, em quais condições e por quanto tempo.

Internamente, inclui implementações de três Handlers: CachingHeaders, Modified e ETag. CachingHeaders é uma combinação dos dois últimos. Em circunstâncias normais, utiliza-se CachingHeaders.

  • Modified: Fornece validação de cache baseada no último horário de modificação do recurso.
  • ETag: Usa Entity Tags para oferecer um mecanismo de validação de recursos mais preciso.
  • CachingHeaders: Combina os dois mecanismos acima para fornecer suporte abrangente ao controle de cache.

Código de Exemplo

main.rs
Cargo.toml
use salvo::prelude::*;

// Handler that returns a simple "Hello World" response
#[handler]
async fn hello() -> &'static str {
    "Hello World"
}

#[tokio::main]
async fn main() {
    // Initialize logging system
    tracing_subscriber::fmt().init();

    // Set up router with caching headers and compression middleware
    // CachingHeader must be before Compression to properly set cache control headers
    let router = Router::with_hoop(CachingHeaders::new())
        .hoop(Compression::new().min_length(0)) // Enable compression for all responses
        .get(hello);

    // Bind server to port 8698 and start serving
    let acceptor = TcpListener::new("0.0.0.0:8698").bind().await;
    Server::new(acceptor).serve(router).await;
}