En-têtes de mise en cache

Un middleware qui fournit un support pour configurer les en-têtes de mise en cache.

Le contrôle du cache est un élément crucial de l'optimisation des performances web. En configurant correctement les en-têtes de mise en cache, on peut réduire les requêtes réseau inutiles, améliorant ainsi les performances de l'application. Cache-Control est un en-tête de réponse HTTP utilisé pour spécifier les politiques de mise en cache du navigateur. Il contrôle qui peut mettre en cache les réponses, sous quelles conditions et pendant combien de temps.

En interne, il inclut les implémentations de trois Handler : CachingHeaders, Modified et ETag. CachingHeaders est une combinaison des deux derniers. Dans des circonstances normales, CachingHeaders est utilisé.

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

Exemple de code

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