Intestazioni di Cache

Un middleware che fornisce supporto per la configurazione delle intestazioni di cache.

Il controllo della cache è una parte cruciale dell'ottimizzazione delle prestazioni web. Impostando correttamente le intestazioni di cache, è possibile ridurre le richieste di rete non necessarie, migliorando così le prestazioni dell'applicazione. Cache-Control è un'intestazione di risposta HTTP utilizzata per specificare le politiche di cache del browser. Controlla chi può memorizzare le risposte in cache, in quali condizioni e per quanto tempo.

Internamente, include implementazioni di tre Handler: CachingHeaders, Modified e ETag. CachingHeaders è una combinazione degli ultimi due. In condizioni normali, si utilizza CachingHeaders.

  • Modified: Fornisce una validazione della cache basata sull'ultima ora di modifica della risorsa.
  • ETag: Utilizza Entity Tags per offrire un meccanismo di validazione delle risorse più preciso.
  • CachingHeaders: Combina i due meccanismi sopra descritti per fornire un supporto completo al controllo della cache.

Codice di Esempio

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;
}