En-têtes de cache

Un middleware fournissant un support pour la configuration des en-têtes de cache.

Le contrôle du cache est une partie essentielle de l'optimisation des performances web. En configurant correctement les en-têtes de cache, on peut réduire les requêtes réseau inutiles et améliorer les performances de l'application. Cache-Control est un en-tête de réponse HTTP utilisé pour spécifier les directives de stratégie de cache du navigateur, contrôlant qui peut mettre en cache la réponse, sous quelles conditions et pendant combien de temps.

L'implémentation comprend en réalité trois Handler : CachingHeaders, Modified et ETag. CachingHeaders est une combinaison des deux derniers. Normalement, on utilise CachingHeaders.

  • Modified : Fournit une validation de cache basée sur la date de dernière modification de la ressource
  • ETag : Utilise une balise d'entité (Entity Tag) pour un mécanisme de validation des ressources plus précis
  • CachingHeaders : Combine les deux mécanismes ci-dessus pour fournir un support complet de contrôle de cache

Exemple de code

main.rs
Cargo.toml
caching-headers/src/main.rs
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 5800 and start serving
    let acceptor = TcpListener::new("0.0.0.0:5800").bind().await;
    Server::new(acceptor).serve(router).await;
}